簡體   English   中英

Android-Facebook集成:第一次用戶會話沒有權限

[英]Android-Facebook integration: First user session has no permission

我有一個Android應用程序,需要能夠更新用戶的Facebook狀態。 我正在使用以下代碼來請求適當的權限:

public void onClick(DialogInterface dialog, int which) {

    final String openPermission = "basic_info";
    final String publishPermission = "publish_actions";

    Session.StatusCallback callback = new Session.StatusCallback() {

        @Override
        public void call(Session session, SessionState state, Exception exception) {
            Log.d("test", "callback session opened " + session.isOpened() + " " + exception);
            if (session.isOpened()) {
                Log.d("test", "callback session permissions " + session.getPermissions());
                if (session.getPermissions().contains(publishPermission)) {
                    doUpdateStatus(session, status);
                } else {
                    Session.NewPermissionsRequest newPermRequest = new Session.NewPermissionsRequest(ctx, publishPermission);
                    session.requestNewPublishPermissions(newPermRequest);
                }
            }
        }
    };

    Session session = new Session.Builder(ctx)
        .setApplicationId(APPLICATION_ID)
        .build();

    Session.setActiveSession(session);

    Log.d("test", "session opened " + session.isOpened());
    if (!session.isOpened()) {
        Session.OpenRequest openRequest = new Session.OpenRequest(ctx);
        openRequest.setPermissions(new String[]{openPermission});
        session.addCallback(callback);
        session.openForRead(openRequest);
    } else {
        callback.call(session, session.getState(), null);
    }
}

除了用戶的第一次嘗試(用戶從未嘗試與我的應用程序進行任何交互)之外,此代碼都能正常工作。 在這種情況下,即使在以無限循環結束的NewPermissionRequest之后, session.getPermissions() NewPermissionRequest返回[],程序將繼續請求publish_action許可。

我怎樣才能做到即使在第一次通話時也能獲得正確的許可?

我找到了一種繞過此問題的方法:我創建2個回調,一個用於會話打開請求,一個用於狀態更新權限請求。

在狀態更新權限請求的回調中,如果會話沒有正確的權限,我只需將其關閉並創建一個新會話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM