2017-12-11 12 views
10

現在、この記事で説明しているGoogle Apiクロスクライアント認証のWebコンポーネントを開発中です。 https://developers.google.com/identity/protocols/CrossClientAuthGoogle Cross Clientの認証と無効なエラー

また、私は午前環境がRailsのであり、この記事で説明したように私は認証コードがウェブを使ってAndroidアプリを介して取得されhttps://developers.google.com/identity/protocols/OAuth2WebServer#handlingtheresponse

をグーグル-APIクライアントの宝石を使用していますクライアントIDを取得し、それを交換するためにWeb APIに渡します。私は、さらに私が説明なしでGoogleからの不正な補助金のエラーが表示されるすべての場合において

auth_client = Google::APIClient::ClientSecrets.load("/path/to/client_secrets.json").to_ 
authorization 
auth_client.update!(
    :grant_type => 'authorization_code' 
) 
auth_client.code = code 
auth_client.fetch_access_token! 

をやってみました

auth_client = Google::APIClient::ClientSecrets.load("/path/to/client_secrets.json").to_ 
authorization 
auth_client.code = code 
auth_client.fetch_access_token! 

を次のように交換する宝石やコードの私の使用です。

私は、カールや郵便配達などの他のAPIツールを活用し、Google Oauthの遊び場を使って宝石を迂回するためにURLを構築しようとしました。

無効な許可エラーを生成する可能性があるかどうか、または宝石の外でグーグルとトークンを直接交換するためのカール要求を生成する方法については、十分に理解できます。

答えて

0

あなたが探している解決策ではないかもしれませんが、アプリケーションのフロントエンドでJavaScript login APIを使用していて、トークンをparams経由でバックエンドに渡しています。このトークンは、この例:

ga_view_ids = @service.list_account_summaries(options: {header: {authorization: "Bearer #{params[:access_token]}"}}).items 

が、それは正しい方向にあなたを得ることができます願っています:)

1
{“error”: “invalid_grant”, “error_description”: “Bad Request”} 

は通常、あなたがアクセスを要求するために使用しているクライアントIDと秘密がに使用したものではないことを意味問題のコードを作成します。

アンドロイドアプリからの認証情報による認証コードリクエストには、同じ資格情報を使用して承認する必要があります。この方法で資格情報を混ぜ合わせることはできません。

あなたのWebアプリケーションでは、アンドロイド・アプリケーションがメモリが提供されている場合にWebクレデンシャルが作成したリフレッシュ・トークンを使用できるようにする必要があります。

+0

私の理解では、Androidクライアントは認証コードを要求するためにクライアントIDのみが必要であると私は理解しています。その場合、同じクライアントIDが、認証コードを交換するために使用されていることを要求するために使用されていることを確認できます。 – rantingsonrails

+0

あなたはAndroidでそれを取得すると言うtgenはWebで使うことはできません。Androidは2つの全く異なるクライアントIDと秘密の異なる資格を持っています – DaImTo

+0

私はここでドキュメントを参照しています。 https://developers.google.com/identity/protocols/CrossClientAuth#offlineAccess 私の理解は、AndroidクライアントがパラメータとしてWebクライアントIDを渡して認証コードを取得することです。 – rantingsonrails

関連する問題