アクセス許可が拒否された際の対処

利用者がFacebookログインを使用してアカウントを作成したり、アプリにログインしたりする際、リクエストされたアクセス許可を付与できます。ただし、利用者は公開プロフィール以外のすべてのアクセス許可を拒否することもできます。利用者がその情報をアプリとシェアすることを不安に思う場合や、情報がアプリのサービス向上にどのように使用されるのかを把握できない場合は、許可を拒否される可能性があります。

アクセス許可を拒否された場合、アプリではその選択を尊重しながら、引き続き利用者がアプリを快適に使用できるようにすることが重要です。

一般に、アプリは以下の3つのいずれかの方法で対処できます。

  1. 情報を取得せずに続行する
  2. 情報が必要な理由を説明してメッセージを再表示する
  3. 情報を自分で収集する

情報を取得せずに続行する

アプリが機能するためにリクエストされた特定のアクセス許可を得る必要がない場合もあります。この場合、アクセス許可の拒否を尊重して、利用者にアプリを引き続き使用するよう促すことが最もシンプルな対処方法です。

以下の例の場合、Flick Finderuser_likesのアクセス許可を利用できれば、映画のおすすめ機能を強化できます。一方、利用者がアクセス許可を拒否した場合、Flick Finderではより一般的なおすすめ映画のみが表示されます。

これは最もシンプルな選択肢で、特定のアクセス許可を拒否した利用者に対して最大限配慮したサービスを提供するものです。

理由を説明してメッセージを再表示する

利用者はアプリがその情報を必要とする理由が分からないためにアクセス許可を拒否した可能性があります。この場合、アプリでその情報が必要な理由と、サービス向上のためにその情報がどのように使用されるのかを説明するダイアログを表示できます。

以下の例の場合、Flick Finderでは、メールアドレス情報があれば、新しい動画が見られるようになったときにアプリから最新情報が送信されること説明するダイアログを表示しています。[メールアドレスを追加]ボタンをクリックすると、利用者がemailアクセス許可を付与できる、Facebookログインフローに戻ります。

この例では、依然としてemailアクセス許可が付与されない可能性もあります。

この方法は、アプリの機能にとって重要、またはぜひ採り入れたいアクセス許可に使用できます。

情報を自分で収集する

情報によっては自分で収集するほうが簡単なものもあります。

この例では、Flick Finderで利用者の年齢にふさわしい映画をおすすめできるように、誕生日情報を必要としています。利用者がFacebookでログインする際に、自分の誕生日のシェアを拒否した場合でも、Flick FinderはFacebookログインフローとは別に、アプリ内でその情報を収集する場所を設けることができます。利用者がアプリを少し使い慣れた後に、このような情報収集を行うことをおすすめします。この場合、情報へのアクセス許可により、アプリのサービスがどのように向上するのかを利用者も理解できます。

この方法で収集できる情報の例には、user_hometownuser_locationuser_birthdayemailがあります。

拒否されたアクセス許可を検出する

利用者がFacebookログインフローの一環としてアクセス許可を拒否した場合、アプリで検出して、上記のいずれかの方法で対処することは簡単です。

Android向けSDK

AndroidではAndroid用Facebook SDKAccessTokenオブジェクトでgetDeclinedPermissionsメソッドを呼び出せます。

iOS向けSDK

iOSではiOS用Facebook SDK[FBSDKAccessToken declinedPermissions]メソッドを呼び出せます。

JavaScript SDK

アクセス許可が拒否されたことを検出するには、Graph APIのpermissionsオブジェクトでUserエッジを呼び出します。応答を介して反復すると、拒否されたアクセス許可を収集できます。

FB.api('/me/permissions', function(response) {
  var declined = [];
  for (i = 0; i < response.data.length; i++) { 
    if (response.data[i].status == 'declined') {
      declined.push(response.data[i].permission)
    }
  }
  alert(declined.toString())
});

API

アクセス許可が拒否されたことを検出するには、Graph APIのpermissionsオブジェクトでUserエッジを呼び出します。

GET https://graph.facebook.com/me/permissions?access_token=USER_ACCESS_TOKEN

フォームの応答が返されます。

{ "data": [
    {
      "permission": "user_birthday",
      "status": "granted"
    },
    {
      "permission": "public_profile",
      "status": "granted"
    },
    {
      "permission": "email",
      "status": "declined"
    }
]}

これは、利用者からuser_birthdaypublic_profileのアクセス許可が与えられ、emailのアクセス許可が拒否されたことをアプリに伝えています。

概要

拒否されたアクセス許可に対して的確に対処することは、Facebookログインの優れた機能を利用者に提供するうえで重要になります。

上記のいずれかの方法を採用すると、アプリをダウンロードしてインストールする利用者が迷惑や不安に感じることなく、アプリにログインできるようになります。このような印象は、アプリの評判やアプリストアの評価に影響します。