Androidいじいじしててはまったところメモ。
現象
AndroidでFacebookSDKを使って以下のようなコードを書くとエラーで落ちる。
Session.openActiveSession(activity, true, Arrays.asList("publish_actions"), new Session.StatusCallback() {
public void call(final Session session, SessionState state, Exception exception) {
}
}
エラーメッセージ
com.facebook.FacebookException: Cannot pass a publish or manage permission (publish_actions) to a request for read authorization
対応方法
エラーメッセージやこちらの回答にもあるが基本的な権限がないとpublish_actions権限を取得できない。
こちらの回答にあるように、ログイン(基本的な権限の取得)とpublish_actions権限の取得を分ける必要がある。
FacebookSDkのサンプルのHelloFacebookSampleやscrumptiousが同じようなやり方をしている。
Session.openActiveSession(activity, true, new Session.StatusCallback() {
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpend()) {
Session.NewPermissionsRequest req = new Session.NewPermissionsRequest(activity, Arrays.asList("publish_actions"));
session.requestNewPublishPermissions(req);
}
}
}