2016-06-12 27 views
3

Using OAuth 2.0 for Installed Applicationsで説明した手順に従って、私は自分のアプリケーションの認証コードを取得できました。アプリケーションのみを使用して(新しいaccess_tokenはを取得する必要がありますよう、 http://image.prntscr.com/image/bcda26f2ee12463e80e4fdd9401380da.pngGoogle API OAuth2 - 承認トークンからリフレッシュトークンを取得

私は「その他」タイプを使用しています:

は、私はGoogleのデベロッパーコンソールでOAuth 2.0のクライアントIDとして自分のアプリケーションを登録していますrefresh_token)、いかなるタイプのユーザー同意も使用しません。

プライベートアプリケーションであるため、セキュリティは重要ではありません。

スプレッドシートを読み書きし、スプレッドシートにリンクされているGoogle Appsスクリプトを実行する必要があります。

これはGoogle's OAuth 2.0 Playgroundによると、「https://www.googleapis.com/auth/spreadsheets」範囲内で可能なすべてのです:私は(thisステップ以下)は、以下の要求を使用して、認証コードの上に私の手を取得することができた

http://image.prntscr.com/image/a506d2095be1472aa1807a52b01ab1f1.png

:私のブラウザにこのURLを貼り付ける

https://accounts.google.com/o/oauth2/v2/auth? 
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets& 
redirect_uri=urn:ietf:wg:oauth:2.0:oob& 
response_type=code& 
client_id=#####.apps.googleusercontent.com 

、それは、このページに私をリダイレクト:

http://image.prntscr.com/image/64ccfc9a63be4cb985163c0e3ba0c8ef.png

私は理論的には、refresh_tokenとaccess_tokenはと交換することができ、認証コードを得ているこの方法です。

私はrefresh_tokenとaccess_tokenはのための認証コードを交換する際にGoogleのOAuth 2.0プレイグラウンドがありません要求模倣しようとした:

http://image.prntscr.com/image/54e7e7da18f044c3a86e2a05b51ba830.png

それは、次のURLにPOSTリクエストを送信します。

https://www.googleapis.com/oauth2/v3/token? 
    code={auth_code}& 
    redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground& 
    client_id=#####.apps.googleusercontent.com& 
    client_secret=#####& 
    scope=& 
    grant_type=authorization_code 

このリクエストを実行しようとすると、次のレスポンスでERROR 400が返されます。

{"error": "invalid_request", "error_description": "Invalid parameter value for redirect_uri: Missing scheme: {redirect_uri}} 

redirect_uriに「スキームがありません」というエラーが表示されます。 アプリケーションタイプが「その他」であり、はそのタイプのリダイレクトURIを承認できないため、これは私の意見では奇妙ではありません。

私は(私が欲しいものまさにである)OAuth2ForDevicesを試してみましたが、私は、Googleのスプレッドシートのためにそれを使用することはできません。

クライアントIDタイプ「その他」(Googleスプレッドシートで使用可能)で取得した認証コードを使用してrefresh_token(およびaccess_token)を取得する正しい方法は何ですか?

答えて

4

私はそれを理解しました。

はこの要求を使用します。

https://accounts.google.com/o/oauth2/v2/auth? 
    scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets& 
    redirect_uri=urn:ietf:wg:oauth:2.0:oob& 
    response_type=code& 
    client_id=#####.apps.googleusercontent.com 

これは認証コードを返します。あなたは ":IETF:WG:OAuthの:2.0:URN OOB" 使用しない場合は

POST /oauth2/v4/token HTTP/1.1 
Host: www.googleapis.com 
Content-Type: application/x-www-form-urlencoded 

code={auth_code}& 
client_id=######.apps.googleusercontent.com& 
client_secret=#####& 
redirect_uri=urn:ietf:wg:oauth:2.0:oob& 
grant_type=authorization_code 

:あなたのREDIRECT_URIなどを、それは動作しません 次に、以下のPOST要求を行います。これはOAuth2InstalledApp Guideに記載されていません(私を混乱させるredirect_uriの例として "https://oauth2-login-demo.appspot.com/code"が使用されています)。

短い答え:使用 "URN:IETF:WG:OAuthの:2.0:OOB" REDIRECT_URIとして

0

使用あなたが呼び出しに使用したのと同じREDIRECT_URI:

https://accounts.google.com/o/oauth2/v2/auth

GoogleはそのURIへのこれ以上のリクエストは行いませんが、私はそれをいくつかの小さなセキュリティを追加する目的で使用するものとします。

関連する問題