рдЗрди-рдРрдк рдмрд┐рд▓рд┐рдВрдЧ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди (рд╕рджрд╕реНрдпрддрд╛) рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдзрди рдХреА рдбреЗрдмрд┐рдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдХрд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореБрджреНрд░реАрдХрд░рдг рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╕рд╣рд╛рдпрдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ,
рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА
рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреБрдЫ рдмрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрджрддрд╛ рд╣реИ
- рдПрдХ рд╕рдлрд▓ рдЦрд░реАрдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡реЗрджрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдСрд░реНрдбрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЗрдирджреЗрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╕рджрд╕реНрдпрддрд╛ рдмрд┐рдХреНрд░реА рдЯреЛрдХрди, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рд╕рд░реНрд╡рд░ Google Play рдкрд░ рдЖрджреЗрд╢ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдирджреЗрди рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рднреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ
- рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╕рд░реНрд╡рд░ рдирд╡реАрдХрд░рдг рдХреЗ рддрдереНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рд▓рд╛рдн рдЕрд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ
рд▓реЗрдЦ рдЗрди-рдРрдк рдмрд┐рд▓рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг 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 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдкреНрдд
рдХрдВрд╕реЛрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛ рдкрд░рд┐рдЪрдп рджреЗрдирд╛ рд╣реЛрдЧрд╛ :

рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
- рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд┐рдВрдХ рдЦреЛрд▓реЗрдВ
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
рдпрд╣рд╛рдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдлрд╝рд▓рд╛рдЗрди рдкреНрд░рдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ , рдЬрд┐рд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрд╛рдж рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧреА - рд▓реЙрдЧрд┐рди рд▓рд╛рдЧреВ
- рдкреНрд░рд╕реНрддреБрдд рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЦрд╛рддрд╛ рдПрдХреНрд╕реЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

- рдкреАрдЫреЗ рдХреЗ рд▓рд┐рдВрдХ рд╕реЗ рдХреЛрдб рдпрд╛рдж рд░рдЦреЗрдВ
example.com/oauth2callback?code=4/AuthoRIZ4ti0nC0De
- рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ
$ 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]
- Access_token рдлрд╝реАрд▓реНрдб API рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ 3600 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ expires_in рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рдмрд╛рдж, рдЯреЛрдХрди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛
- рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ (рдареАрдХ рд╣реИ, рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рднреВрд▓ рдЧрдП) рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЖрдк рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред
$ 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 рдПрдХ рдирдпрд╛ рдЯреЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЯреЛрдХрдиред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдЯреЛрдХрди рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВ:
- рдХреБрдЫ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕реЗрд╡ рдХрд░реЗрдВ
- рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрдерд╛рди рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЕрдкрдбреЗрдЯ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред рд╡реИрд╕реЗ, рд╡рд╣ рд╣рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯрд╛рдЗрдк рдСрдлрд▓рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рднреА рд╕реБрд▓рдн рд╣реИред рдпрджрд┐ рдмреИрдХрд▓рд┐рдВрдХ рдХреЛрдб рдХреА рд╡реИрдзрддрд╛ рд╕реАрдорд┐рдд рд╣реИ, рддреЛ рдХреЛрдИ рдбреЗрдЯрд╛ рдЕрджреНрдпрддрди рдЯреЛрдХрди рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдпрд╣ рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
- рдпрджрд┐ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ 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]
- рдЙрд╕реА рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рддрд╛рдЬрд╛ рдЯреЛрдХрди рдХреА рд░рд╕реАрдж рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдХреЗ рдЦрд░реАрджреА рдЧрдИ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
$ 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 рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
- рджреАрдХреНрд╖рд╛рддрдорд╛рд╕реНрддрдореНрдкрдореЗрд╕реН = 1357909784.285 рд╕реЗрдХрдВрдб = 2013-01-11 17:09:44
- validUntilTimestampMsec = 1360588184.285 рд╕реЗрдХрдВрдб = 2013-02-11 23:09:44
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЦрд╛рддреЗ рд╕реЗ рдзрдирд░рд╛рд╢рд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 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]
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрддрд┐ рдХреА рддрд╛рд░реАрдЦ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдСрдЯреЛ-рдирд╡реАрдиреАрдХрд░рдг рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЖрд╡реЗрджрди рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░реНрд╡рд░ рд╕рдорд░реНрдерди рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

рд╡рд┐рд╡рд░рдг:
- рдЦрд░реАрдж - рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЦрд░реАрдж
- рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ - рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рджрд╕реНрдпрддрд╛ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди, рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╕рдордп
- рдХрддрд╛рд░ - рд╕рддреНрдпрд╛рдкрд┐рдд рд╕рджрд╕реНрдпрддрд╛ рдХреА рдХрддрд╛рд░
- рдЖрд╡рдзрд┐рдХ рд╕рддреНрдпрд╛рдкрди - рд╕рдордп-рд╕рдордп рдкрд░ рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред рдпрджрд┐ рд╕рджрд╕реНрдпрддрд╛ рдирд╡реАрдиреАрдХреГрдд рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, рдпрд╣ 15K / рджрд┐рди рд╣реИ
- рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд░рд┐рдлреНрд░реЗрд╢рд┐рдВрдЧ - рдмреНрд▓реЙрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд░реАрдлреНрд░реЗрд╢, рдпрджрд┐ рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реЛ
рдпрджрд┐ рдХреЛрдИ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:
- рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП
- рдХреВрд▓рд░ рд▓реЗрдХрд┐рди рдХрдард┐рди