From b19a78b27247f5f0761c35b5b3e8a41876eabb05 Mon Sep 17 00:00:00 2001 From: lpw <pengwei.li@gamehollywood.com> Date: Tue, 20 Apr 2021 17:18:32 +0800 Subject: [PATCH] no message --- frameworks/FBSDKLoginKit.framework/Headers/FBSDKLoginManager.h | 303 +++++++++++++++++++++++++++----------------------- 1 files changed, 164 insertions(+), 139 deletions(-) diff --git a/frameworks/FBSDKLoginKit.framework/Headers/FBSDKLoginManager.h b/frameworks/FBSDKLoginKit.framework/Headers/FBSDKLoginManager.h index ee35bd8..e6b5aaf 100644 --- a/frameworks/FBSDKLoginKit.framework/Headers/FBSDKLoginManager.h +++ b/frameworks/FBSDKLoginKit.framework/Headers/FBSDKLoginManager.h @@ -16,27 +16,77 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -#import <Accounts/Accounts.h> -#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> + +#import "FBSDKLoginConfiguration.h" + +NS_ASSUME_NONNULL_BEGIN + +#if TARGET_OS_TV + +// This is an unfortunate hack for Swift Package Manager support. +// SPM does not allow us to conditionally exclude Swift files for compilation by platform. +// +// So to support tvOS with SPM we need to use runtime availability checks in the Swift files. +// This means that even though the code in `LoginManager.swift` will never be run for tvOS +// targets, it still needs to be able to compile. Hence we need to declare it here. +// +// The way to fix this is to remove extensions of ObjC types in Swift. + +@class LoginManagerLoginResult; +@class FBSDKLoginConfiguration; + +typedef NS_ENUM(NSUInteger, LoginBehavior) { LoginBehaviorBrowser }; +typedef NS_ENUM(NSUInteger, DefaultAudience) { DefaultAudienceFriends }; + +typedef void (^LoginManagerLoginResultBlock)(LoginManagerLoginResult *_Nullable result, + NSError *_Nullable error); + +@interface LoginManager : NSObject + +@property (assign, nonatomic) LoginBehavior loginBehavior; +@property (assign, nonatomic) DefaultAudience defaultAudience; + +- (void)logInWithPermissions:(NSArray<NSString *> *)permissions + fromViewController:(nullable UIViewController *)fromViewController + handler:(nullable LoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(logIn(permissions:from:handler:)); + +- (void)logInFromViewController:(nullable UIViewController *)viewController + configuration:(FBSDKLoginConfiguration *)configuration + completion:(LoginManagerLoginResultBlock)completion +NS_REFINED_FOR_SWIFT; + +@end + +#else @class FBSDKLoginManagerLoginResult; -/*! - @abstract Describes the call back to the FBSDKLoginManager +/// typedef for FBSDKLoginAuthType +typedef NSString *const FBSDKLoginAuthType NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(LoginAuthType); + +/// Rerequest +FOUNDATION_EXPORT FBSDKLoginAuthType FBSDKLoginAuthTypeRerequest; + +/// Reauthorize +FOUNDATION_EXPORT FBSDKLoginAuthType FBSDKLoginAuthTypeReauthorize; + +/** + Describes the call back to the FBSDKLoginManager @param result the result of the authorization @param error the authorization error, if any. */ -typedef void (^FBSDKLoginManagerRequestTokenHandler)(FBSDKLoginManagerLoginResult *result, NSError *error); +typedef void (^FBSDKLoginManagerLoginResultBlock)(FBSDKLoginManagerLoginResult *_Nullable result, + NSError *_Nullable error) +NS_SWIFT_NAME(LoginManagerLoginResultBlock); -/*! - @typedef FBSDKDefaultAudience enum +/** + FBSDKDefaultAudience enum - @abstract - Passed to open to indicate which default audience to use for sessions that post data to Facebook. + Passed to openURL to indicate which default audience to use for sessions that post data to Facebook. - @discussion Certain operations such as publishing a status or publishing a photo require an audience. When the user grants an application permission to perform a publish operation, a default audience is selected as the publication ceiling for the application. This enumerated value allows the application to select which @@ -44,159 +94,134 @@ */ typedef NS_ENUM(NSUInteger, FBSDKDefaultAudience) { - /*! Indicates that the user's friends are able to see posts made by the application */ + /** Indicates that the user's friends are able to see posts made by the application */ FBSDKDefaultAudienceFriends = 0, - /*! Indicates that only the user is able to see posts made by the application */ + /** Indicates that only the user is able to see posts made by the application */ FBSDKDefaultAudienceOnlyMe, - /*! Indicates that all Facebook users are able to see posts made by the application */ + /** Indicates that all Facebook users are able to see posts made by the application */ FBSDKDefaultAudienceEveryone, -}; +} NS_SWIFT_NAME(DefaultAudience); -/*! - @typedef FBSDKLoginBehavior enum +/** + `FBSDKLoginManager` provides methods for logging the user in and out. - @abstract - Passed to the \c FBSDKLoginManager to indicate how Facebook Login should be attempted. + `FBSDKLoginManager` serves to help manage sessions represented by tokens for authentication, + `AuthenticationToken`, and data access, `AccessToken`. - @discussion - Facebook Login authorizes the application to act on behalf of the user, using the user's - Facebook account. Usually a Facebook Login will rely on an account maintained outside of - the application, by the native Facebook application, the browser, or perhaps the device - itself. This avoids the need for a user to enter their username and password directly, and - provides the most secure and lowest friction way for a user to authorize the application to - interact with Facebook. + You should check if the type of token you expect is present as a singleton instance, either `AccessToken.current` + or `AuthenticationToken.current` before calling any of the login methods to see if there is a cached token + available. A standard place to do this is in `viewDidLoad`. - The \c FBSDKLoginBehavior enum specifies which log-in methods may be used. The SDK - will determine the best behavior based on the current device (such as iOS version). + @warning If you are managing your own token instances outside of `AccessToken.current`, you will need to set + `AccessToken.current` before calling any of the login methods to authorize further permissions on your tokens. */ -typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) -{ - /*! - @abstract This is the default behavior, and indicates logging in through the native - Facebook app may be used. The SDK may still use Safari instead. - */ - FBSDKLoginBehaviorNative = 0, - /*! - @abstract Attempts log in through the Safari or SFSafariViewController, if available. - */ - FBSDKLoginBehaviorBrowser, - /*! - @abstract Attempts log in through the Facebook account currently signed in through - the device Settings. - @note If the account is not available to the app (either not configured by user or - as determined by the SDK) this behavior 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, -}; - -/*! - @abstract `FBSDKLoginManager` provides methods for logging the user in and out. - @discussion `FBSDKLoginManager` works directly with `[FBSDKAccessToken currentAccessToken]` and - sets the "currentAccessToken" upon successful authorizations (or sets `nil` in case of `logOut`). - - You should check `[FBSDKAccessToken currentAccessToken]` before calling logIn* to see if there is - a cached token available (typically in your viewDidLoad). - - If you are managing your own token instances outside of "currentAccessToken", you will need to set - "currentAccessToken" before calling logIn* to authorize futher permissions on your tokens. - */ +NS_SWIFT_NAME(LoginManager) @interface FBSDKLoginManager : NSObject -/*! - @abstract the default audience. - @discussion you should set this if you intend to ask for publish permissions. +/** + Auth type + */ +@property (strong, nonatomic) FBSDKLoginAuthType authType; +/** + the default audience. + + you should set this if you intend to ask for publish permissions. */ @property (assign, nonatomic) FBSDKDefaultAudience defaultAudience; -/*! - @abstract the login behavior - */ -@property (assign, nonatomic) FBSDKLoginBehavior loginBehavior; +/** + Logs the user in or authorizes additional permissions. -/*! - @deprecated use logInWithReadPermissions:fromViewController:handler: instead - */ -- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -__attribute__ ((deprecated("use logInWithReadPermissions:fromViewController:handler: instead"))); - -/*! - @deprecated use logInWithPublishPermissions:fromViewController:handler: instead - */ -- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler -__attribute__ ((deprecated("use logInWithPublishPermissions:fromViewController:handler: instead"))); - -/*! - @abstract Logs the user in or authorizes additional permissions. - @param permissions the optional array of permissions. Note this is converted to NSSet and is only - an NSArray for the convenience of literal syntax. - @param fromViewController the view controller to present from. If nil, the topmost view controller will be - automatically determined as best as possible. - @param handler the callback. - @discussion Use this method when asking for read permissions. You should only ask for permissions when they - are needed and explain the value to the user. You can inspect the result.declinedPermissions to also - provide more information to the user if they decline permissions. - - If `[FBSDKAccessToken currentAccessToken]` is not nil, it will be treated as a reauthorization for that user - and will pass the "rerequest" flag to the login dialog. - - This method will present UI the user. You typically should check if `[FBSDKAccessToken currentAccessToken]` - already contains the permissions you need before asking to reduce unnecessary app switching. For example, - you could make that check at viewDidLoad. - */ -- (void)logInWithReadPermissions:(NSArray *)permissions - fromViewController:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; - -/*! - @abstract Logs the user in or authorizes additional permissions. @param permissions the optional array of permissions. Note this is converted to NSSet and is only an NSArray for the convenience of literal syntax. @param fromViewController the view controller to present from. If nil, the topmost view controller will be automatically determined as best as possible. @param handler the callback. - @discussion Use this method when asking for publish permissions. You should only ask for permissions when they - are needed and explain the value to the user. You can inspect the result.declinedPermissions to also - provide more information to the user if they decline permissions. - If `[FBSDKAccessToken currentAccessToken]` is not nil, it will be treated as a reauthorization for that user - and will pass the "rerequest" flag to the login dialog. + Use this method when asking for read permissions. You should only ask for permissions when they + are needed and explain the value to the user. You can inspect the `FBSDKLoginManagerLoginResultBlock`'s + `result.declinedPermissions` to provide more information to the user if they decline permissions. + You typically should check if `AccessToken.current` already contains the permissions you need before + asking to reduce unnecessary login attempts. For example, you could perform that check in `viewDidLoad`. - This method will present UI the user. You typically should check if `[FBSDKAccessToken currentAccessToken]` - already contains the permissions you need before asking to reduce unnecessary app switching. For example, - you could make that check at viewDidLoad. + @warning You can only perform one login call at a time. Calling a login method before the completion handler is called + on a previous login attempt will result in an error. + @warning This method will present a UI to the user and thus should be called on the main thread. */ -- (void)logInWithPublishPermissions:(NSArray *)permissions - fromViewController:(UIViewController *)fromViewController - handler:(FBSDKLoginManagerRequestTokenHandler)handler; +- (void)logInWithPermissions:(NSArray<NSString *> *)permissions + fromViewController:(nullable UIViewController *)fromViewController + handler:(nullable FBSDKLoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(logIn(permissions:from:handler:)); -/*! - @abstract Logs the user out - @discussion This calls [FBSDKAccessToken setCurrentAccessToken:nil] and [FBSDKProfile setCurrentProfile:nil]. +/** + Logs the user in or authorizes additional permissions. + + @param viewController the view controller from which to present the login UI. If nil, the topmost view + controller will be automatically determined and used. + @param configuration the login configuration to use. + @param completion the login completion handler. + + Use this method when asking for permissions. You should only ask for permissions when they + are needed and the value should be explained to the user. You can inspect the + `FBSDKLoginManagerLoginResultBlock`'s `result.declinedPermissions` to provide more information + to the user if they decline permissions. + To reduce unnecessary login attempts, you should typically check if `AccessToken.current` + already contains the permissions you need. If it does, you probably do not need to call this method. + + @warning You can only perform one login call at a time. Calling a login method before the completion handler is called + on a previous login attempt will result in an error. + @warning This method will present a UI to the user and thus should be called on the main thread. + */ +- (void)logInFromViewController:(nullable UIViewController *)viewController + configuration:(FBSDKLoginConfiguration *)configuration + completion:(FBSDKLoginManagerLoginResultBlock)completion +NS_REFINED_FOR_SWIFT; + +/** + Logs the user in with the given deep link url. Will only log user in if the given url contains valid login data. + @param url the deep link url + @param handler the callback. + +This method will present a UI to the user and thus should be called on the main thread. +This method should be called with the url from the openURL method. + + @warning This method will present a UI to the user and thus should be called on the main thread. + */ +- (void)logInWithURL:(NSURL *)url + handler:(nullable FBSDKLoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(logIn(url:handler:)); + +/** + Requests user's permission to reathorize application's data access, after it has expired due to inactivity. + @param fromViewController the view controller from which to present the login UI. If nil, the topmost view + controller will be automatically determined and used. + @param handler the callback. + +Use this method when you need to reathorize your app's access to user data via the Graph API. +You should only call this after access has expired. +You should provide as much context to the user as possible as to why you need to reauthorize the access, the +scope of access being reathorized, and what added value your app provides when the access is reathorized. +You can inspect the `result.declinedPermissions` to determine if you should provide more information to the +user based on any declined permissions. + + @warning This method will reauthorize using a `LoginConfiguration` with `FBSDKLoginTracking` set to `.enabled`. + @warning This method will present UI the user. You typically should call this if `AccessToken.isDataAccessExpired` is true. + */ +- (void)reauthorizeDataAccess:(UIViewController *)fromViewController + handler:(FBSDKLoginManagerLoginResultBlock)handler +NS_SWIFT_NAME(reauthorizeDataAccess(from:handler:)); + +/** + Logs the user out + + This nils out the singleton instances of `AccessToken` `AuthenticationToken` and `Profle`. + + @note This is only a client side logout. It will not log the user out of their Facebook account. */ - (void)logOut; -/*! - @method - - @abstract Issues an asychronous renewCredentialsForAccount call to the device's Facebook account store. - - @param handler The completion handler to call when the renewal is completed. This can be invoked on an arbitrary thread. - - @discussion This can be used to explicitly renew account credentials and is provided as a convenience wrapper around - `[ACAccountStore renewCredentialsForAccount:completion]`. Note the method will not issue the renewal call if the the - Facebook account has not been set on the device, or if access had not been granted to the account (though the handler - wil receive an error). - - If the `[FBSDKAccessToken currentAccessToken]` was from the account store, a succesful renewal will also set - a new "currentAccessToken". - */ -+ (void)renewSystemCredentials:(void (^)(ACAccountCredentialRenewResult result, NSError *error))handler; - @end + +#endif + +NS_ASSUME_NONNULL_END -- Gitblit v1.8.0