我希望用户在我的应用程序中使用他的facebook登录,但我不希望应用程序进入Safari然后返回应用程序。
我发现有些人通过在facebook.m
中调用此方法[self authorizeWithFBAppAuth:NO safariAuth:NO];
来回答这个问题
我的问题是我没有facebook.m文件而我没有实现此功能。
我正在使用最新的facebook SDK 3.1我该如何解决?
感谢
答案 0 :(得分: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];
}
}
}];
答案 1 :(得分:0)
你看过这个方法吗?
- (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之外管理整个网络/身份验证,然后在经过身份验证后设置活动会话令牌。