我正在使用Facebook SDK作爲Android應用程序,它需要額外的2個權限才能登錄/註銷。 這兩個權限是讀取權限:用戶組和發佈權限:發佈。更新Facebook的Android會話權限,而無需註銷並再次登錄
問題是,在最新的Facebook API中需要分別詢問每個權限。我很好。
問題是,在用戶確認它們後,會話對象沒有用新的權限更新,除非我再次註銷並登錄到應用程序。
如果我可以一次詢問所有權限,但是再次不可能,這將不是問題。
有沒有其他方法可以避免這種情況?
而在OnActivityResult是的,我已經嘗試了一切,並在Session.getActiveSession的權限()對象不會更新與新的權限,即使如果我嘗試做必要的行動它的工作原理。
要求用戶在每次許可請求後註銷並登錄應用程序是完全不可行的。
這就是我在我的OnActivityResult(它工作完全好btw)。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("RADARE","ON ACTIVITY RESULT CALLED");
Log.d("RADARE","REQUEST CODE: " + requestCode + " == RESULT CODE: " + resultCode + " == INTENT: " + data.toString());
if (RESULT_CANCELED == resultCode) {
Log.d("RADARE", "Canceled");
}
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
@Override
public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
Log.e("Activity", String.format("Error: %s", error.toString()));
}
@Override
public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
Log.i("Activity", "Success!");
}
});
Session session = Session.getActiveSession();
Log.d("RADARE","Session info: TOKEN: " + session.getAccessToken() + " == PERMISSIONS: " + session.getPermissions().toString() + " == STATE: " + session.getState());
Toast.makeText(this, "You have to logout and login again in order for the service to work.", Toast.LENGTH_LONG).show();
我的第一個想法是,而不是使用Session.getPermissions()。包含(「needed_permission_here」),實際的許可,而不是Session對象在網上查詢。
現在,它只是進入一個循環:
的權限檢查=>權限是不存在=>跳到Facebook的應用程序要求的權限=>用戶授予它=>再次應用檢查許可(即使用戶確認了它們也不存在)並跳轉到facebook(這當然只是以確認的許可回覆),並且它們無限地來回跳舞。
除了在線檢查權限,還有其他想法嗎?
謝謝你的回覆。這不是問題。我有權限。而這正是我現在正在接受他們的方式。 問題是,在用戶授予權限後,再次運行此方法,在Session對象中,權限不會更新爲新的和已確認的權限。 如果我註銷並再次登錄應用程序,權限在那裏,一切工作正常。 – manu144x 2014-10-10 12:38:43