スコープの変更がユーザーに与える影響を最小限に抑える手順
- アプリケーションで認証済みユーザーのメールアドレスが必要で、以前にその目的のために
profile.emails.read
を使用したことがある場合は、代わりにemail
を使用してください。 - 承認済みのオーナー確認リクエストで
profile.emails.read
の承認を得ます。適格性確認を申請するにはどうすればよいですか?をご覧ください。 - 削除するスコープに対して以前のユーザー トークンを取り消すか、アプリケーションへのアクセス権を完全に削除します。たとえば、
profile.emails.read
アクセス権を持つトークンは取り消します。ユーザーがすぐに同意を得られるように、ユーザーがアプリケーションを使用している間に取り消しを適用することをおすすめします。 profile.emails.read
を使用せずに、新しいスコープ(email
など)に再度同意するようユーザーに求めます。- Google API の OAuth 同意画面の設定から段階的に廃止するスコープを削除します。
アプリを Google+ ログインから Google ログインに移行するには、ログインボタン、リクエストされたスコープ、Google からプロフィール情報を取得する手順を更新する必要があります。詳しい手順については、Android 向け Google ログインのドキュメントをご覧ください。
ログインボタンを更新するときは、Google+ に言及したり、赤色を使用したりしないでください。最新のブランドの取り扱いガイドラインに準拠している。
ほとんどの Google+ ログイン アプリケーションは、スコープの組み合わせ(plus.login
、plus.me
、plus.profile.emails.read
)をリクエストしました。DEFAULT_SIGN_IN
オプションを指定して GoogleSignInOptions.Builder
を使用すると、ユーザーの名前とプロフィール写真を提供する profile
スコープが自動的にリクエストされます。ユーザーのメールアドレスが必要な場合は、Google ログイン オプションの作成時に .requestEmail()
を呼び出す必要があります。
多くの Google+ ログインの実装者が、コードフローを使用しています。つまり、Android アプリ、iOS アプリ、JavaScript アプリが Google から OAuth 認証コードを取得し、クライアントがそのコードをクロスサイト リクエスト フォージェリ対策とともにサーバーに送り返します。その後、サーバーはコードを検証し、更新トークンとアクセス トークンを取得して、people.get
API からユーザー プロフィール情報を pull します。
ID トークンをリクエストし、クライアントからサーバーに送信することをおすすめします。ID トークンにはクロスサイト フォージェリ保護機能が組み込まれており、サーバーで静的に検証することもできます。これにより、Google のサーバーからユーザー プロフィール情報を取得するための追加の API 呼び出しを回避できます。サーバーで ID トークンを検証するの手順に沿って操作します。
それでもコードフローを使用してプロフィール情報を取得する場合は、そのようにできます。サーバーでアクセス トークンを取得したら、ログインの検出に関するドキュメントで指定されている userinfo
エンドポイントからユーザー プロフィール情報を取得する必要があります。API レスポンスは Google+ プロフィールのレスポンスとは形式が異なるため、解析を新しい形式に更新する必要があります。
GoogleAuthUtil.getToken
または Plus.API
を使用している場合は、最新の Sign-In API にmigrateすると、セキュリティとユーザー エクスペリエンスが向上します。