0

我希望用户在我的应用程序中使用他的 facebook 登录,但我不希望应用程序进入 Safari,然后返回应用程序。

[self authorizeWithFBAppAuth:NO safariAuth:NO];我发现有些人通过在 facebook.m 中调用此方法来回答这个问题

我的问题是我没有 facebook.m 文件,也没有实现此功能。

我正在使用最新的 facebook SDK 3.1 我该如何解决这个问题?

谢谢

4

2 回答 2

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];
                        }
                    }
                }];
于 2014-01-30T08:56:08.637 回答
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 之外管理整个 Web / 身份验证,然后在通过身份验证后设置活动会话令牌。

于 2013-01-23T14:05:09.223 回答