[英]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.