3

セッション状態が「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);
}

}

4

0 に答える 0