[英]Android Facebook SDK login issue with parse sdk
使用LoginManager
類登錄時出現奇怪的問題。 我正在從片段中調用LoginManager.getInstance().logInWithReadPermissions(..)
,以使用所需的權限登錄。
我已盡力調試,發現返回到此片段的父活動的onActivityResult
的回調請求代碼是錯誤的。 以下代碼來自LoginManager
類,該類使用某些請求代碼注冊了登錄回調。
...
CallbackManagerImpl.registerStaticCallback(
CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode(),
new CallbackManagerImpl.Callback() {
@Override
public boolean onActivityResult(int resultCode, Intent data) {
return LoginManager.this.onActivityResult(resultCode, data);
}
}
);
...
但是,當它調用活動的onActivityResult時,它不是CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode()
而是其他東西,例如double。 例如,當我嘗試調試並檢查值時,它是這樣的:
CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode()= 64206
活動類中收到的requestCode = 129742
現在正因為如此,當callbackManager嘗試調用onActivityResult時,
callbackManager.onActivityResult(requestCode,resultCode,data);
有了這個requestCode,它從地圖上找不到繼續前進的logincallback,它就在那里停了下來。 我不知道為什么會發生這種情況,因為我正在使用ParseFacebookSDK,並且當我使用ParseFacebookUtils.logInWithReadPermissionsInBackground(..)
登錄時,它可以完美地工作。 以下是gradle依賴項。
...
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
compile('com.parse:parse-android:1.13.0') {
exclude group: 'com.parse.bolts',
module: 'bolts-tasks'
}
compile 'com.parse:parsefacebookutils-v4-android:1.10.3@aar'
...
如果可以幫助,將不勝感激。 謝謝。
更新:
當我嘗試從父級活動而不是片段登錄Facebook時,它對我有用,這次它在活動的onActivityResult中返回了正確的請求代碼,並且很簡單。 這已經解決了我的問題,但仍然想在這里了解片段的問題,因此,如果您知道,請分享您的想法。 謝謝。
在用戶已登錄的情況下嘗試調用ParseFacebookUtils.logInWithReadPermissionsInBackground
是不正確的,這可能就是為什么您沒有獲得回調的原因。
如果您的用戶已經登錄但未鏈接到Facebook,則調用的正確函數是ParseFacebookUtils.linkWithReadPermissionsInBackground
,這意味着您希望將用戶鏈接到Facebook,而不是登錄到您的應用程序(因為他已經登錄)。 在文檔中查看一下。
如果要從片段中調用LoginManager.getInstance().logInWithReadPermissions(..)
,則期望在片段的onActivityResult
中接收正確的請求代碼,而不是活動的onActivityResult
。
看這里 。 片段具有自己的“ onActivityResult”方法。 他們不必為此而依賴活動。
不一定需要任何UI的東西還是自己提供了此方法,這不是很棒嗎:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.