我希望用户在我的应用程序中使用他的 facebook 登录,但我不希望应用程序进入 Safari,然后返回应用程序。
[self authorizeWithFBAppAuth:NO safariAuth:NO];
我发现有些人通过在 facebook.m 中调用此方法来回答这个问题
我的问题是我没有 facebook.m 文件,也没有实现此功能。
我正在使用最新的 facebook SDK 3.1 我该如何解决这个问题?
谢谢
我希望用户在我的应用程序中使用他的 facebook 登录,但我不希望应用程序进入 Safari,然后返回应用程序。
[self authorizeWithFBAppAuth:NO safariAuth:NO];
我发现有些人通过在 facebook.m 中调用此方法来回答这个问题
我的问题是我没有 facebook.m 文件,也没有实现此功能。
我正在使用最新的 facebook SDK 3.1 我该如何解决这个问题?
谢谢
这是我在对话框中打开登录所做的工作。但它有双重缺点,因为如果用户在设置中有帐户,那么登录不会要求他访问他的帐户。此方法将始终使用 WebView(登录对话框)登录。
FBSession *session = [[FBSession alloc] initWithAppID:@"283938491920393" // here use your app id
permissions:@[@"read_stream"] // you can change this parameter
defaultAudience:FBSessionDefaultAudienceFriends
urlSchemeSuffix:@"fb"
tokenCacheStrategy:nil];
// Set the active session
[FBSession setActiveSession:session];
// Open the session
[session openWithBehavior:FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
// Respond to session state changes,
// ex: updating the view
if(!error && session.isOpen)
{
// user has logged in
}
else
{
if(error)
{
// error
}
else
{
// handle the session state change
[self session:session
hasChangedState:status
withError:error];
}
}
}];
你看过这个方法吗?
- (void)openWithBehavior:(FBSessionLoginBehavior)behavior
completionHandler:(FBSessionStateHandler)handler;
这些是可用的行为:
typedef enum {
/*! Attempt Facebook Login, ask user for credentials if necessary */
FBSessionLoginBehaviorWithFallbackToWebView = 0,
/*! Attempt Facebook Login, no direct request for credentials will be made */
FBSessionLoginBehaviorWithNoFallbackToWebView = 1,
/*! Only attempt WebView Login; ask user for credentials */
FBSessionLoginBehaviorForcingWebView = 2,
/*! Attempt Facebook Login, prefering system account and falling back to fast app switch if necessary */
FBSessionLoginBehaviorUseSystemAccountIfPresent = 3,
} FBSessionLoginBehavior;
您也可以只在 API 之外管理整个 Web / 身份验证,然后在通过身份验证后设置活动会话令牌。