基本ログイン時、アプリでは利用者の公開プロフィールとメールアドレスにアクセスできます。その他のプロフィール情報にアクセスしたり、利用者に代わってFacebookでコンテンツを公開したりするには、そのために必要なアクセス許可をリクエストする必要があります。
デフォルト公開プロフィールフィールド - 基本プロフィール情報へのアクセスを許可します。
読み取りアクセス許可 - 利用者がFacebookプロフィールに追加するその他のすべての情報は、他の読み取りアクセス許可によって保護されています。
書き込みアクセス許可 - 利用者に代わってコンテンツを投稿するアプリには、投稿アクセス許可が別途必要です。
アプリでアクセス許可を管理する方法は次のとおりです。
アプリが他の人にFacebookリクエストを送信する際、必要なアクセス許可を確認して、必要に応じてリクエストしてください。
アプリでは、Facebookで不足しているアクセス許可のエラーについて、アクセス許可をリクエストし、再試行して対処してください。
アプリの利用者はFacebookでアクセス許可を撤回できますが、アプリ内でアクセス許可を実装することもできます。
ログイン全体を取り消すメカニズムを実装して、利用者がアプリから基本ログイン権限を削除できるようにすることも可能です。
提供されている各種のアクセス許可について詳しくは、アクセス許可に関するガイドをご覧ください。
利用者は投稿アクセス許可を付与することに慎重であるため、初回ログイン時ではなく、利用者があなたのアプリから何かを投稿する準備ができたときに初めて、投稿アクセス許可をリクエストするようにしてください。
基本ログイン時、アプリでは利用者の公開プロフィールとメールアドレスにアクセスできます。その他のプロフィール情報にアクセスしたり、その人の代わりにFacebookでコンテンツを公開したりするには、必要なアクセス許可をリクエストする必要があります。
この例では、user_status
を取得します。これらのアクセス許可を、LoginButton
ボタン、またはログインとアクセス許可用のカスタムUIに渡すことができます。
MainFragment
クラスで、onCreateView()
のコードを次のように変更します。
... LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton); authButton.setFragment(this); authButton.setReadPermissions(Arrays.asList("user_status")); return view; ...
LoginManager
はシングルトンインスタンスであり、AccessTokenのcurrentAccessTokenと連動します。正常なログイン後、currentAccessTokenが設定されます。追加のアクセス許可は、logInWithPermissionName
メソッドを呼び出すだけでリクエストできます。
logInWithPermissionName
メソッドは常にUIを開き、必要に応じて利用者に追加のアクセス許可をリクエストします。利用者から追加のアクセス許可を取得するには、Android用Facebook SDKで次のリクエストを行います。
LoginManager.getInstance().logInWithReadPermissions( fragmentOrActivity, Arrays.asList("email"));
これを使用して、まだアプリに付与されていないアクセス許可をリクエストします。これは初回ログイン後に使用できます。
アクセス許可のリファレンスにリスト表示されているほとんどの読み取りアクセス許可をリクエストできます。
利用者のログイン中、読み取りアクセス許可や投稿許可はいくつでもリクエストできます。5つ以上のアクセス許可のリクエストがあると、利用者がログインを完了する割合が非常に少なくなります。
2018年4月24日以降、pubish_actions
アクセス許可は削除されています。詳しくは重要な変更の更新履歴をご覧ください。アプリユーザーがFacebookにコンテンツをシェアできるようにするために、シェア製品を代わりに使うことをおすすめします。
ログイン時にpublish_actions
で投稿アクセス許可をリクエストすると、そのログインUIで2番目のステップが設けられます。したがって、ログイン時は最小限の読み取りアクセス許可をリクエストし、実際に許可が必要になったときに、追加のアクセス許可や投稿アクセス許可をリクエストするようにしてください。アクセス許可リクエストを最適化する方法については、アクセス許可の最適化をご覧ください。
アプリで投稿アクセス許可をリクエストするには、LoginManager
を使用できます。
LoginManager.getInstance().logInWithPublishPermissions( fragmentOrActivity, Arrays.asList("publish_actions"));
これにより、アプリがログイン時にすでに取得したアクセス許可以外のアクセス許可がリクエストされます。
利用者は、リクエストされたアクセス許可のサブセットのみを付与できます。ただし、ログイン時に付与されるpublic profile
は例外です。
現在のアクセストークンと関連付けられているアクセス許可のリストを取得するには、以下を呼び出します。
AccessToken.getCurrentAccessToken().getPermissions();
却下されたアクセス許可のリストを取得するには、以下を呼び出します。
AccessToken.getCurrentAccessToken().getDeclinedPermissions();
リクエストしたアクセス許可のいずれかを利用者が却下したケースに、アプリが対応できるようにしておいてください。アプリが動作するために却下されたアクセス許可のいずれかが必要な場合は、上記の例のように、LoginManager
を使用して再度リクエストできます。
Facebookログインを実装すると、その利用者のデータのサブセットへのアクセス許可を任意でリクエストすることができます。
デフォルト公開プロフィールフィールドとメールアドレス以外のデータをアプリがリクエストする場合、アプリのリリース前にFacebookによる審査が必要になります。審査プロセスと、審査にパスするための条件について詳しくは、次をご覧ください。
ログインレビューガイド