OAuth2 を使用した Google APIの最良の出発点としてこれを読むことをお勧めします。あなたの場合、これが必要です: OAuth2 for Devices。
おそらく、間違ったエンドポイントを使用してユーザー コードを要求している可能性があります。次のエンドポイントを使用する必要があります。
https://accounts.google.com/o/oauth2/device/code
これは curl を使用した例です (あなたの場合はGoogle+ APIへのアクセスを承認します):
curl https://accounts.google.com/o/oauth2/device/code -d "client_id=**your_client_id**" -d "scope=https://www.googleapis.com/auth/plus.me" -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob"
次のような答えが得られます。
{
"device_code" : "4/AToZcyQ7U1BTV-xu4LAqpw02SgIW",
"user_code" : "bqsj67hb",
"verification_url" : "http://www.google.com/device",
"expires_in" : 1800,
"interval" : 5
}
次に、アプリをユーザーのユーザー アカウントと「ペアリング」するためのuser_codeとvalidation_url をユーザーに表示して、承認を求める必要があります。これまたはドキュメントからの良い例があります:
アプリケーションがユーザーにuser_codeとvalidation_url を表示した後、アプリケーションは、 user_codeとvalidation_urlで返された device_code を使用してGoogle エンドポイントのポーリングを開始できます。ポーリングするエンドポイントの URL はhttps://accounts.google.com/o/oauth2/tokenで、リクエストの間隔は秒単位で指定されます。
最後のステップでは、curl を使用して access_token を要求します。
curl https://accounts.google.com/o/oauth2/token -d "client_id=**your_client_id**&client_secret=**your_client_secret**&code=**the _device_code_obtained_before**&grant_type=http://oauth.net/grant_type/device/1.0"
次のような応答が返されます。
{
"access_token" : "y23r9.AHES6ZT78qJl14pTueruthfh5676TYDF234-Eme33iQ",
"token_type" : "Bearer",
"expires_in" : 3600,
"id_token" : "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXVkIjoiNzgyMTM3OTUzMjkwLmFwcHMuZ29vZ2iLCJ0b2tlbl9oYXNoIjoiUUt0YmxTZUdsRUdNOVdPcUliRGR2QSIsImlhdCI6MTMzNDE3MDI1NywiZXhwIjoxMzM0MTc0MTU3fQ.Iz_Sv9X2fCydj4VfEdDxwWVH70DEK-rSzA5pWV9bvBdYB5VwgwFd8CSnotesDzJxq5pSKGwnAgvBfxSUbuGVmdET3E2sbrLODKymO9FoBzenfVooCwRXurzxvjKWF1EL3007lOPzTx9UGjqwShjjKQRoNjLFs-OmGCJsZGTHTGE",
"refresh_token" : "1/gjgpKUyppp223s43HMerTX-zS_2JUxQOCk"
}
最後に、取得したaccess_tokenを使用して、許可したサービスにアクセスできます (API コンソールからアクセスを構成することを忘れないでください。この場合は Google+ API) 。
curl https://www.googleapis.com/plus/v1/people/me?access_token=y23r9.AHES6ZT78qJl14pTueruthfh5676TYDF234-Eme33iQ
の質問に関しては
「アプリケーションがhttp://localhost urlで実行されているようには見えません」。
答えはイエスです。これは予想される動作です。このredirect_uriは、アプリにパーミッションが正常に付与された後にコールバックする場所を示しています。あなたの場合、モバイルデバイス。
"urn:ietf:wg:oauth:2.0:oob"の場合、正確にはリダイレクトではありません。単にプロセスを続行するには、これを「キャッチ」または「フック」する必要があります。
幸運を!