2013-04-07 15 views
11

にログインできませんでした: 私はドキュメントが私に言ったが、私はいつもSTEP4で失敗したステップバイステップました: https://developers.google.com/+/web/signin/「immediate_failed」 - automatially私はサインインGoogle+のと私のウェブサイトを開発し、問題を持っているユーザー

結果は常に "" immediate_failed " - ユーザーに自動的にログインできませんでした"、私はちょうどkownしない理由は、誰も助けてくれます、ありがとう! :-(

+0

投稿できますかあなたが使っているコードは? –

答えて

21

あなたが指摘したサンプルコードでは、「immediate_failed」チェックがコメントアウトされています。これは意図的なものです。ユーザーが初めてページのサインインボタンを検出すると失敗します。

これは、ページが最初に読み込まれたときに、ユーザーがボタンを押す前に、Googleにリクエストが送信されて、ユーザーが既にログインしているかどうか(たとえばGoogleや別のサイトなど)を判断するためです。そうであれば、再度ログインする必要はないので、ボタンを表示する必要はありませんが、でない場合はが既にログインしているので、 "immediate_failed"という応答が得られます。ボタンを表示する(またはクリアしない)。

tl; dr - ページが最初に読み込まれたときにimmediate_failedを取得する心配はありません。これは正常です。

+0

これは[Javascriptのクイックスタートページ](https://developers.google.com/sheets/api/quickstart/js)の実例に示されています。 – LondonRob

3

回避策として、gapi.auth.signInコールバックにgapi.auth.authorizeメソッドを使用します。私のコードは次のとおりです:

gapi.auth.signIn({ 
    'callback': gPlusLoginCallback 
}); 

function gPlusLoginCallback(authResult) { 
    if (authResult['status']['signed_in']) { 
     doSmth(authRes['access_token']); 
    } else if (authResult['error'] == "immediate_failed") { 
     gapi.auth.authorize({ 
      client_id: gplusClientId, 
      scope: 'https://www.googleapis.com/auth/plus.login email', 
      immediate: true 
     }, function (authRes) { 
      if (authRes['status']['signed_in']) { 
       doSmth(authRes['access_token']); 
      } 
     }); 
    } 
} 

function doSmth(accessToken){ 
    //Do smth 
} 
2

この設定を「即時:true」に変更すると、「即時:false」になります。 しかし、もっと複雑な実装をしたいのであれば、最初のサンプルはこちらhttps://developers.google.com/api-client-library/javascript/start/start-jsを見てください。 Googleの "gapi.auth.authorize({..."、最初のものは "immediate:true"、もう1つは "immediate:false")に電話する必要があります。

+0

ありがとう!これは私のために働いた。 – SsjCosty

0

質問は古いですが最近、この問題に直面していました。

を私の場合は、noneURI parameterpromptを指定したので、それはだった。私はGoogleは、ユーザーが前に、ご使用のプラットフォームにログインされていない場合ことを好きではないと思います。

たびIそれをconsentに変更したか、完全に削除しても、うまくいきました。

関連する問題