[英]Ask for additional facebook permission
嘗試檢索附加權限“ publish_action”時遇到麻煩。
我假設用戶已經通過Facebook登錄,因此授予了基本權限。 然后我有以下代碼(來自我的片段):
List<String> permissionsRequested = Arrays.asList("publish_actions");
List<String> permissionsActual = session.getPermissions();
if (!isSubsetOf(permissionsRequested, permissionsActual)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, permissionsRequested);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
從調試的角度來看,在用戶授予權限后,控制權轉到了onActivityResult,根據facebook文檔,我有
super.onActivityResult(requestCode, resultCode, data);
facebookUiHelper.onActivityResult(requestCode, resultCode, data);
uiHelper也適用於所有onResume&onDestroy方法(根據文檔)。
在onCreate我有
super.onCreate(savedInstanceState);
facebookUiHelper = new UiLifecycleHelper(getActivity(), fbSessionCallback);
facebookUiHelper.onCreate(savedInstanceState);
其中fbSessionCallback具有重寫的call()
方法,該方法調用了我的onFbSessionRestore()
:
if (pendingPublishReauthorization &&
state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
pendingPublishReauthorization = false;
// do things with my new session, updated with granted permission. e.g. post to fb.
}
麻煩的是
有人可以幫助從onActivityResult及更高版本配置工作流程嗎? 我閱讀了facebook文檔,並且傾向於指責他們寫得不好。 也許只是我太蠢了...:(((
這是我設置的方式:
Session session = Session.getActiveSession();
if (session != null) {
List<String> permissions = session.getPermissions();
if (!permissions.contains("publish_actions")) {
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, "publish_actions");
session.addCallback(callbacktwo);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
}
這在我的onActivityResult中,但不是必須的。 我以前在onCreate中使用過它。 我在請求中添加了回調,然后可以將其用於下一步。
這是我的回調:
private Session.StatusCallback callbacktwo = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Intent in = new Intent(getActivity(), ClassHere.class);
startActivity(in);
}
};
請記住,回調將響應兩次,一次是在您啟動權限請求時,是在其完成后。 因此,您必須解決該問題/將其納入代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.