セッション状態が「OPENED」ではなく「CREATED」であるため、作成したばかりのユーザーセッションで公開権限をすぐにリクエストしようとすると、次のエラーが発生します
"Session: an attempt was made to request new permissions for a session that is not currently open."
すぐに公開許可を求めるにはどうすればよいですか? 新しいユーザーを承認し、1 回の呼び出しで公開権限を取得する方法はありますか?
最終セッション session = Session.getActiveSession(); if (session.isOpened()) { shareToFacebook(loadedImage, shareBody, session); } そうしないと {
final StatusCallback callback = new StatusCallback() {
public void call(Session thisSession, SessionState state, Exception exception) {
if (exception != null) {
Toast.makeText(getApplicationContext(), "Facebook permissions failed: " + exception.getMessage(),
Toast.LENGTH_SHORT).show();
}
else
{
shareToFacebook(loadedImage, shareBody, thisSession);
}
}
};
//up the permissions and then post
if (session != null && !isSubsetOf(PERMISSIONS, session.getPermissions())) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(ActivityFacts.this, PERMISSIONS);
session.addCallback(callback);
session.requestNewPublishPermissions(newPermissionsRequest);
}
else
{
//add user then up the permissions
StatusCallback authorizeCallback = new StatusCallback() {
public void call(Session thisSession, SessionState state, Exception exception) {
if (exception != null) {
Toast.makeText(getApplicationContext(), "Facebook login failed: " + exception.getMessage(),
Toast.LENGTH_SHORT).show();
}
else
{
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(ActivityFacts.this, PERMISSIONS);
session.addCallback(callback);
session.requestNewPublishPermissions(newPermissionsRequest);
}
}
};
OpenRequest openRequest = new OpenRequest(ActivityFacts.this);
List<String> readPermissions = new ArrayList<String>();
readPermissions.add("email");
openRequest.setPermissions(readPermissions);
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
openRequest.setCallback(authorizeCallback);
session.openForRead(openRequest);
}
}