[英]FBSDKLoginManager works, PFFacebookUtils logInInBackgroundWithReadPermissions not
[英]PFFacebookUtils logInInBackgroundWithReadPermissions: block: opens Facebook app instead of using system account
我已升級到ParseFacebookUtilsV4並且我已更新我的登錄代碼:
[PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) {
...
}];
但是,現在我的應用程序短暫切換到Facebook應用程序並返回。 它使用原生Facebook應用程序登錄,而在設置中仍然有一個有效的iOS Facebook帳戶。 如何在可用的情況下使PFFacebookUtils
v4使用系統Facebook帳戶,並且只有在系統帳戶不可用時才回退到Facebook應用程序?
從ParseFacebookUtilsV4的Header文件
PFFacebookUtils.h
...
/ *! @abstract
FBSDKLoginManager
提供了配置登錄行為,默認受眾和管理Facebook訪問令牌的方法。@returns
FBSDKLoginManager
使用的PFFacebookUtils
。 * /+ (FBSDKLoginManager *)facebookLoginManager;
因此,據說PFFacebookutils使用了“FBSDKLoginManager”的聲明,讓我們看看是否有效。 實際上,我們將默認設置為“系統帳戶”,...這是代碼:
[[PFFacebookUtils facebookLoginManager] setLoginBehavior:FBSDKLoginBehaviorSystemAccount];
[PFFacebookUtils logInInBackgroundWithReadPermissions:FACEBOOK_READ_PERMISSIONS block:^(PFUser *user, NSError *error) {
}];
是的,此代碼編譯,此代碼有效,只需確保在調用登錄內容之前聲明登錄行為,最好在初始化代碼庫,Parse,Parse Facebook Utilities等時在AppDelegate中聲明。
事實上,為了確保這對您有用,我剛剛下載了最新版本的PARSE iOS SDK,它具有相同的功能。 以下是您的選擇,這是來自Facebook SDK for iOS,它提供PFFacebookUtils:
@typedef FBSDKLoginBehavior enum
@abstract傳遞給\\ c FBSDKLoginManager以指示應如何嘗試Facebook登錄。
@discussion Facebook登錄使用用戶的Facebook帳戶授權應用程序代表用戶行事。 通常,Facebook登錄將依賴於在應用程序之外,本機Facebook應用程序,瀏覽器或設備本身維護的帳戶。 這避免了用戶直接輸入用戶名和密碼的需要,並為用戶提供了最安全和最低摩擦的方式來授權應用程序與Facebook交互。
\\ c FBSDKLoginBehavior枚舉指定應該嘗試哪種登錄方法。 大多數應用程序將使用默認值,它會嘗試通過Facebook應用程序登錄,並在需要時回退到瀏覽器。
如果無法使用特定行為完成登錄,則將使用\\ c FBSDKErrorDomain中的錯誤和\\ c FBSDKLoginUnknownErrorCode的代碼調用完成處理程序。 * /
typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior)
{
/*!
@abstract Attempts log in through the native Facebook app. If the Facebook app is
not installed on the device, falls back to \c FBSDKLoginBehaviorBrowser. This is the
default behavior.
*/
FBSDKLoginBehaviorNative = 0,
/*!
@abstract Attempts log in through the Safari browser
*/
FBSDKLoginBehaviorBrowser,
/*!
@abstract Attempts log in through the Facebook account currently signed in through Settings.
If no Facebook account is signed in, falls back to \c FBSDKLoginBehaviorNative.
*/
FBSDKLoginBehaviorSystemAccount,
/*!
@abstract Attemps log in through a modal \c UIWebView pop up
@note This behavior is only available to certain types of apps. Please check the Facebook
Platform Policy to verify your app meets the restrictions.
*/
FBSDKLoginBehaviorWeb,
};
打開Facebook應用程序是根據SDK使用您的應用程序進行身份驗證的首選方案。 這種行為是由Facebook及其SDK定義的,而不是真正的Parse問題。
除非您想要添加一大堆自定義代碼直接與iOS系統帳戶連接,否則您必須使用應用程序打開並返回到您的應用程序。 多數民眾贊成每個人都這樣做 ...(我知道,有點蹩腳的回答)
如果你想嘗試自己,請開始研究
ACAccountType *facebookAccountType = [[[ACAccountStore alloc] init] accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
來自Github的Fork Parse庫
進去,改變你想要的任何東西......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.