рдЗрди-рдРрдк рдмрд┐рд▓рд┐рдВрдЧ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рд╛рдЗрдб

рдЗрди-рдРрдк рдмрд┐рд▓рд┐рдВрдЧ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди (рд╕рджрд╕реНрдпрддрд╛) рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдзрди рдХреА рдбреЗрдмрд┐рдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдХрд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореБрджреНрд░реАрдХрд░рдг рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╕рд╣рд╛рдпрдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреБрдЫ рдмрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрджрддрд╛ рд╣реИ
  2. рдПрдХ рд╕рдлрд▓ рдЦрд░реАрдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡реЗрджрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдСрд░реНрдбрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЗрдирджреЗрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рдмрд┐рдХреНрд░реА рдЯреЛрдХрди, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
  3. рд╕рд░реНрд╡рд░ Google Play рдкрд░ рдЖрджреЗрд╢ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдирджреЗрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рднреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ
  4. рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╕рд░реНрд╡рд░ рдирд╡реАрдХрд░рдг рдХреЗ рддрдереНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рд▓рд╛рдн рдЕрд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ


рд▓реЗрдЦ рдЗрди-рдРрдк рдмрд┐рд▓рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг 2 рдХреЗ рд▓рд┐рдП рд╡рд┐рдореБрджреНрд░реАрдХрд░рдг рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред


рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Google Google Play Android рдбреЗрд╡рд▓рдкрд░ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ ред рдПрдкреАрдЖрдИ рдХреЗрд╡рд▓ рджреЛ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:



рдпрджрд┐ рдЖрдк com.myapp рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреБрдЫ myapp.month.test рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЯреЛрдХрди, рдЙрддреНрдкрд╛рдж, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд╕рднреА рдорд┐рд▓рд╛рди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдЦрд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ), рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:

$ wget 'https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription' --2013-02-11 18:24:01-- https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription Resolving www.googleapis.com (www.googleapis.com)... 173.194.71.95, 2a00:1450:4010:c04::5f Connecting to www.googleapis.com (www.googleapis.com)|173.194.71.95|:443... connected. HTTP request sent, awaiting response... 401 Unauthorized Authorization failed. 


рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ OAuth2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдкреНрдд рдХрдВрд╕реЛрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛ рд╣реЛрдЧрд╛ :

рдЫрд╡рд┐

рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
  1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд┐рдВрдХ рдЦреЛрд▓реЗрдВ accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher
    &response_type=code&access_type=offline
    &redirect_uri=http://example.com/oauth2callback
    &client_id=someclientid.apps.googleusercontent.com
    рдпрд╣рд╛рдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдлрд╝рд▓рд╛рдЗрди рдкреНрд░рдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ , рдЬрд┐рд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрд╛рдж рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА
  2. рд▓реЙрдЧрд┐рди рд▓рд╛рдЧреВ
  3. рдкреНрд░рд╕реНрддреБрдд рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЦрд╛рддрд╛ рдПрдХреНрд╕реЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

    рдЫрд╡рд┐
  4. рдкреАрдЫреЗ рдХреЗ рд▓рд┐рдВрдХ рд╕реЗ рдХреЛрдб рдпрд╛рдж рд░рдЦреЗрдВ example.com/oauth2callback?code=4/AuthoRIZ4ti0nC0De
  5. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ

     $ wget https://accounts.google.com/o/oauth2/token --post-data 'code=4/AuthoRIZ4ti0nC0De&client_id=someclientid.apps.googleusercontent.com&client_secret=c1iEnT5eCReT&redirect_uri=http://example.com/oauth2callback&grant_type=authorization_code' -O - --2013-02-11 18:31:20-- https://accounts.google.com/o/oauth2/token Resolving accounts.google.com (accounts.google.com)... 173.194.71.84, 2a00:1450:4010:c04::54 Connecting to accounts.google.com (accounts.google.com)|173.194.71.84|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/json] Saving to: `STDOUT' [<=> ] 0 --.-K/s { "access_token" : "ya29.ACCeSs-T0keN", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/rEfRE5hT0KeN" [ <=> ] 127 --.-K/s in 0s 2013-02-11 18:31:20 (16.6 MB/s) - written to stdout [127] 


  6. Access_token рдлрд╝реАрд▓реНрдб API рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ 3600 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ expires_in рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рдж, рдЯреЛрдХрди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛
  7. рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ (рдареАрдХ рд╣реИ, рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рднреВрд▓ рдЧрдП) рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЖрдк рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред

     $ wget https://accounts.google.com/o/oauth2/token --post-data 'code=4/0thER-AuthoRIZ4ti0nC0De&client_id=someclientid.apps.googleusercontent.com&client_secret=c1iEnT5eCReT&redirect_uri=http://example.com/oauth2callback&grant_type=authorization_code' -O - --2013-02-11 18:31:20-- https://accounts.google.com/o/oauth2/token Resolving accounts.google.com (accounts.google.com)... 173.194.71.84, 2a00:1450:4010:c04::54 Connecting to accounts.google.com (accounts.google.com)|173.194.71.84|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/json] Saving to: `STDOUT' [<=> ] 0 --.-K/s { "access_token" : "ya29.neW-ACCeSs-T0keN", "token_type" : "Bearer", "expires_in" : 3573, [ <=> ] 127 --.-K/s in 0s 2013-02-11 18:31:20 (16.6 MB/s) - written to stdout [127] 




рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, Google рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЯреЛрдХрдиред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдЯреЛрдХрди рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВ:

  1. рдХреБрдЫ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕реЗрд╡ рдХрд░реЗрдВ
  2. рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрдерд╛рди рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЕрдкрдбреЗрдЯ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред рд╡реИрд╕реЗ, рд╡рд╣ рд╣рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯрд╛рдЗрдк рдСрдлрд▓рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рднреА рд╕реБрд▓рдн рд╣реИред рдпрджрд┐ рдмреИрдХрд▓рд┐рдВрдХ рдХреЛрдб рдХреА рд╡реИрдзрддрд╛ рд╕реАрдорд┐рдд рд╣реИ, рддреЛ рдХреЛрдИ рдбреЗрдЯрд╛ рдЕрджреНрдпрддрди рдЯреЛрдХрди рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдпрд╣ рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
  3. рдпрджрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ HTTP 401 рдХреЛрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдЙрддреНрддрд░ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

     $ wget 'https://accounts.google.com/o/oauth2/token' --post-data 'refresh_token=1/rEfRE5hT0KeN&client_id=someclientid.apps.googleusercontent.com&client_secret=c1iEnT5eCReT&grant_type=refresh_token' -O - --2013-02-11 19:33:13-- https://accounts.google.com/o/oauth2/token Resolving accounts.google.com (accounts.google.com)... 173.194.71.84, 2a00:1450:4010:c04::54 Connecting to accounts.google.com (accounts.google.com)|173.194.71.84|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/json] Saving to: `STDOUT' [<=> ] 0 --.-K/s { "access_token" : "ya29.rEFre5hED-ACCeSs-T0keN", "token_type" : "Bearer", "expires_in" : 3600 [ <=> ] 127 --.-K/s in 0s 2013-01-11 19:33:14 (18.7 MB/s) - written to stdout [127] 


  4. рдЙрд╕реА рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ


рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рддрд╛рдЬрд╛ рдЯреЛрдХрди рдХреА рд░рд╕реАрдж рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдХреЗ рдЦрд░реАрджреА рдЧрдИ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

 $ wget 'https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN' -O - --2013-02-11 19:50:21-- https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN Resolving www.googleapis.com (www.googleapis.com)... 173.194.71.95, 2a00:1450:4010:c04::5f Connecting to www.googleapis.com (www.googleapis.com)|173.194.71.95|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/json] Saving to: `STDOUT' [<=> ] 0 --.-K/s { "kind": "androidpublisher#subscriptionPurchase", "initiationTimestampMsec": "1357909784285", "validUntilTimestampMsec": "1360588184285", "autoRenewing": true } [ <=> ] 167 --.-K/s in 0s 2013-02-11 19:50:21 (30.7 MB/s) - written to stdout [167] 


рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рджреАрдХреНрд╖рд╛ TimestampMsec рдФрд░ рдорд╛рдиреНрдпUntilTimestampMsec рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:



рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдзрдирд░рд╛рд╢рд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП Google рдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд 6 рдШрдВрдЯреЗ рд╣реИрдВред рд░рджреНрджреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдордп-рд╕рдордп рдкрд░ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреИрд╕рд╛ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдбреЗрдмрд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ~ 2013-02-11 17:10 рдореЗрдВред рд╡реИрд╕реЗ, рдлреЗрд╕рдмреБрдХ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рднреБрдЧрддрд╛рди рдЕрд╡рдзрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ 4 рджрд┐рди рдмрд╛рдж рддрдХ рдбреЗрдмрд┐рдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдИрдЯреНрдпреВрдиреНрд╕ рднреБрдЧрддрд╛рди рдХреА рдЕрд╡рдзрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдПрдХ рджрд┐рди рдкрд╣рд▓реЗ рдкреИрд╕рд╛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рддрдХ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкреВрд░рд╛ рди рд╣реЛ рдЬрд╛рдП, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░рд┐рдиреНрдпреВ рд╣реБрдЖ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рддреЛ Google 400 рд╡реЗрдВ HTTP рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, HTTP 404 рдореЗрдВ рдПрдХ рдЧрд▓рдд рдЕрдиреБрд░реЛрдз рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

 $ wget 'https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/not.myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN' -O - --2013-02-11 19:58:24-- https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/not.myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN Resolving www.googleapis.com (www.googleapis.com)... 173.194.71.95, 2a00:1450:4010:c04::5f Connecting to www.googleapis.com (www.googleapis.com)|173.194.71.95|:443... connected. HTTP request sent, awaiting response... 400 Bad Request 2013-02-11 19:58:25 ERROR 400: Bad Request. 


рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдг:

 $ wget 'https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription/cancel?access_token=ya29.rEFre5hED-ACCeSs-T0keN' --post-data '' -O - --2013-02-11 20:01:16-- https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription/cancel?access_token=ya29.rEFre5hED-ACCeSs-T0keN Resolving www.googleapis.com (www.googleapis.com)... 173.194.71.95, 2a00:1450:4010:c04::5f Connecting to www.googleapis.com (www.googleapis.com)|173.194.71.95|:443... connected. HTTP request sent, awaiting response... 204 No Content 


HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб 204 рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рдПрдХ рд╕рдлрд▓ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 $ wget 'https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN' -O - --2013-02-11 20:08:47-- https://www.googleapis.com/androidpublisher/v1/applications/com.myapp/subscriptions/myapp.month.test/purchases/subsubsubscripscription?access_token=ya29.rEFre5hED-ACCeSs-T0keN Resolving www.googleapis.com (www.googleapis.com)... 173.194.71.95, 2a00:1450:4010:c04::5f Connecting to www.googleapis.com (www.googleapis.com)|173.194.71.95|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/json] Saving to: `STDOUT' [<=> ] 0 --.-K/s { "kind": "androidpublisher#subscriptionPurchase", "initiationTimestampMsec": "1357909784285", "validUntilTimestampMsec": "1360588184285", "autoRenewing": false } [ <=> ] 167 --.-K/s in 0s 2013-02-11 20:08:49 (23.5 MB/s) - written to stdout [167] 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрддрд┐ рдХреА рддрд╛рд░реАрдЦ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдСрдЯреЛ-рдирд╡реАрдиреАрдХрд░рдг рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЖрд╡реЗрджрди рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерди рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

рдЫрд╡рд┐

рд╡рд┐рд╡рд░рдг:



рдпрджрд┐ рдХреЛрдИ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

Source: https://habr.com/ru/post/In160911/


All Articles