簡體   English   中英

PFFacebookUtils logInInBackgroundWithReadPermissions:block:打開Facebook應用程序而不是使用系統帳戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM