Google+ サインイン ボタンを使用した 2 つの Web アプリケーションがあります。そのうちの 1 つは正常に動作し、もう 1 つはログインしているように見えますが、(コールバック メソッドで) 0 の authenticationResult を返します。 「おかえりなさい。sean christe として Google+ サインイン経由でこのアプリに既に接続しています。」というポップアップが表示されます。
すべてが機能している私のアプリでは、signinCallback の authenticationResult は本格的な JavaScript オブジェクトです。機能していないアプリでは、それは単なる 0 です。
私が心配していることの 1 つは、2 つのアプリの clientId に大きな違いがあることです。すべてが機能しているアプリでは、clientId は 12 の数字のみです。サインインが 0 を返すアプリでは、ClientId は最初の 12 の数字と「-」の後に 32 文字の英数字の文字列が続きます。すべての例には 12 の数字しかないようです。また、動作していないアプリの ClientID には 3 つの JavaScript オリジンがあります。動作しているアプリには 1 つしかありません。この ClientID は正常ですか? - ドキュメントを見つけるのに問題があります。
私は両方のアプリで Google エンドポイントを使用しています.gapi オブジェクトが機能しているアプリにはすべてのエンドポイントが設定されています.
編集: 以下のコメントについて - 私の正確なコードは実際にここに投稿されています: http://exposure101-development.blogspot.com/2013/07/initializing-angularjs-app-with-oauth2.htmlと私が使用しているディレクティブそれを行うには、ここhttps://github.com/sirkitree/angular-directive.g-signin/blob/master/google-plus-signin.jsです。
2 つのアプリ間で唯一異なるのは clientIds です - 私は 2 つのスクリーンショットを撮りました - 各アプリの 1 つです (それらはローカルにのみ展開されています - いずれも AppEngine にはまだ公開されていませんが、そのうちの 1 つが公開される予定です)。これは、私が使用しているディレクティブのコンソール出力です。両方の 2 番目が実際の認証結果です。
1 (正しく動作しているもの)
2 (0 を返すもの)
出力に成功が表示されない理由は、私のコールバックが次のようになっているためです (これは本当に醜いコードです。テスト目的で実行しているだけです)。
// Callback for Google+ Sign-In
function signinCallback(authResult) {
console.log(authResult);
if (authResult['access_token']) {
console.log('SUCCESS');
} else if (authResult['error']) {
console.log('ERROR');
}
}
2番目のものではauthResultが0であるため、オブジェクトにプロパティがありません-コールバックが出力された後に「ASYNCHRONOUSLY LOADING THE G + SDK」が発生する理由も正確にはわかりません-これらの両方で異なるのはクライアント ID。私はディレクティブを編集せずに使用しています (ブログで作成した投稿全体が、Google+ サインイン ボタン (当時は存在していなかった) によって改善されていたことに気付いた後))
9/25 を編集:
G+ サインインから Javascript oauth2/gapi ログイン方法に切り替えたところ、エラーが改善されました。401 "Login Required" が表示されます。これが authenticationResult が私に 0 を与えている理由だと思います。これをどうするかわかりません。