新しいスコープを使用するようにアカウントをアップグレードしているので、スコープのみでユーザーを追加してから、追加して再ログインするplus.login
ことをテストしました。その結果、承認済みアクセス パネルに新しいエントリが導入され、後者の呼び出しから返されたアクセス トークンには許可しかありませんでした。確認済みのトークン呼び出しを行い、人のリストを作成して、これをテストしました。userinfo
plus.login
userinfo
これは予想される動作ですか? もしそうなら、事前に古いトークンを取り消す必要がありますか? アクションで可能だと思います/revoke
。サーバー側の Oauth トークンの削除
更新:関連する Gist。これは Ruby の Omniauth gem を使用しています。ユーザーが認証済みアクセス パネルで複数のエントリをどのように見ることができるかは実際にはわかりませんが、この状況では 2 つを見ることができました。昨日さまざまなシナリオをテストした後、約 6 つのエントリがすべて同じアプリに属していました。クライアント ID は一度も変更していないことに注意してください。実際、クライアント ID は 1 つしかありません。
私が説明した状況が他の人によって再現されることを願っています。Google 側の URL をハッキングして plus.login スコープを削除し、URL をそのまま保持して再度ログインするだけです。
更新 (2): また、この落とし穴を発見しました:「userinfo.profile または plus.me をこのスコープと組み合わせて要求しないでください。これらは暗黙的に含まれており、ユーザーにとって紛らわしい権限ダイアログが作成されるためです。」実際、これは単なる UX パーミッションの問題ではありません。Googleは実際にはユーザーに対して「plus.me」スコープを保存しないようです。つまり、ユーザーがすでにアクセス許可を与えていても、OAuthアクセス許可ダイアログが常に表示されることを意味します(単純な同等性チェックと通知プラスを行うためだと思います.me が要求されますが、ユーザーに対して保存されません)。
更新 (3): 間違ったログインの使用に関するバグは、私のコードが user.login || のようなことを行っていることが原因でした。ログイン時にトークン データを更新せずに user.signup を実行します。そのため、ログインのたびにアクセス トークンとリフレッシュ トークンが更新されるようになりました。(クライアントとユーザーの組み合わせごとに複数のトークンが必要な理由はまだわかりません。)