1

我正在創建一個Android應用程序,您應該可以使用Facebook登錄並具有讀取和發佈權限。我用LoginManager實現它,它運行得很好。這是我的方法登錄到Facebook的:是否可以使用Facebook登錄管理器以及讀取和發佈權限登錄?

/** 
* Attempts to log the user into facebook and to get an access token. 
*/ 
private void facebookLogin() { 
    callbackManager = CallbackManager.Factory.create(); 

    LoginManager loginManager = LoginManager.getInstance(); 
    loginManager.registerCallback(callbackManager, new FacebookLoginCallback()); 
    loginManager.logInWithReadPermissions(this, Constants.FB_READ_PERMISSIONS); 
    loginManager.logInWithPublishPermissions(this, Constants.FB_PUBLISH_PERMISSIONS); 
} 

我一段時間後發現,雖然這個代碼片段將啓動對彼此頂部兩個獨立的Facebook登錄,當一個人完成了另一種是仍然在後臺。如果我僅以讀取權限登錄(或僅以發佈方式登錄),則只需登錄一次,這正是我想要的。

但是我確實需要兩種類型的權限。我瀏覽了Facebook Android登錄guide,他們聲稱你應該使用LoginButton,因爲它可以存儲所需的權限,然後在一個登錄中獲得所有權限。這是登錄管理器不可能的嗎?我查看了整個互聯網,this是唯一指出登錄管理器登錄時讀取發佈,但LoginButton可以同時登錄。

這一切是真的嗎?將登錄從LoginManager更改爲LoginButton並不是一項巨大的工作,但我只想知道是否無法通過LoginManager同時登錄讀取和發佈權限,似乎很奇怪,可能。

回答

0

我自己解決了。

我完全誤解了facebook登錄的工作方式,但是在閱讀facebook api後,我終於修復了它。

如果你需要讀取和發佈權限,你需要在單獨的occations上請求它們。當我第一次登錄應用程序時,我只需要使用loginManager讀取權限(就像我之前所做的那樣)。只有當用戶向Facebook發佈內容時,我才檢查用戶是否具有發佈權限。如果不是,我開始一個新的登錄管理器並要求它。

由於用戶已經登錄一次,用戶只需要批准發佈權限,所以沒有麻煩。

相關問題