1

publish_stream リクエストを実行するには、本当にセッションを閉じて (たとえば、READ セッションから) PUBLISH の新しいアクティブなセッションを構築する必要がありますか?

もしそうなら(またはそうでない場合)、そうするための効果的な方法はありますか?

4

2 に答える 2

2

必要ありません。電話するだけsession.requestNewPublishPermissions(new Session.NewPermissionsRequest(this, PERMISSIONS));

ここで、PERMISSIONS は (適宜変更してください):

    private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");

完了したら、コールバックを取得します。

SessionState.OPENED_TOKEN_UPDATED

上記の状態を確認し、次のように呼び出してメッセージを再度投稿します。

Request statusRequest=Request.newStatusUpdateRequest(Session.getActiveSession(), mStatus.getText().toString(), reqestCallback);
if(statusRequest!=null){
statusRequest.executeAsync();
于 2013-01-10T12:16:30.163 に答える
0
    private class App_Session_StatusCallback implements Session.StatusCallback
    {
        @Override
        public void call(Session session, SessionState state, Exception exception) 
        {
            Log.d("asd", "state changed");
            handleSessionStateChanged(session, state, exception);
        }
    }

    private void handleSessionStateChanged(Session session, SessionState state, Exception exception)
    {
        if(state == SessionState.OPENED_TOKEN_UPDATED)
        {
            Request statusRequest=Request.newStatusUpdateRequest(Session.getActiveSession(), mStatus.getText().toString(), reqestCallback);
            if(statusRequest!=null){
                statusRequest.executeAsync();
            }
        }

        if(session != null)
        {
            if(session.isOpened())
            {
                Log.d("asd", "session is opened");

                Log.d("asd", "Token = " + session.getAccessToken());
                Log.d("asd", "Expiry = " + session.getExpirationDate().toGMTString());
            }
            else
            {
                Log.d("asd", "session is NOT opened");
            }
        }
    }

    Session.getActiveSession().requestNewPublishPermissions(new Session.NewPermissionsRequest(this, Arrays.asList("publish_actions")));
于 2013-01-10T17:22:14.290 に答える