Facebook在iOS下登录

时间:2014-05-20 05:14:46

标签: ios objective-c facebook

因此网上有很多信息,但其中大部分内容似乎已被弃用。

在我的应用内部,我试图让用户使用FacebookSDK登录。

我想打开FBSession,向用户显示Facebook登录屏幕,然后获取他们的登录令牌。

我有一个App Id和一个App Secret,在项目信息中我填充了FacebookAppID(info.plist)。

我不知道该怎么做秘密身份证。我看到旧的引用:

session = [FBSession sessionForApplication:@"=asdfasdfasdf" secret:@"asdfasdfasdf" delegate:self];

但这似乎已被弃用。我的方法的简单版本是这样的:

    -(IBAction)fbLogin:(id)sender
    {
        NSString *fbAccessToken;
        [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];

        //If the user has a facebook session already open
        if (appDelegate.session.isOpen)
        {
            fbAccessToken = [appDelegate.session accessTokenData].accessToken;
            #ifdef DEBUG
            NSLog(@"%@\nFacebook Token = %@", NSStringFromSelector(_cmd), fbAccessToken);
            #endif
        }
        else // there is no facebook session
        {
            appDelegate.session = [[FBSession alloc] init];
            [appDelegate.session openWithCompletionHandler:^(FBSession *session,
                                                             FBSessionState status,
                                                             NSError *error) {
                [self fbLogin:self];

            }];
         }
     }

我是Objective-C和Xcode的新手。所以我想我做错了不止一两件事。

这家伙似乎有一些可靠的信息:https://developers.facebook.com/docs/facebook-login/ios/v2.0

但我真的无法从我的Facebook开发者页面找到我需要如何使用我的'App Secret'。

由于

1 个答案:

答案 0 :(得分:0)

据我所知,您不需要在应用中使用应用秘密。我已经按照您在问题中添加的相同链接,但由于我更喜欢​​拥有自己的登录用户界面,因此我遵循了this particular section from the tutorial。将应用ID添加到我的应用plist文件后,这就是我让用户从我的应用登录Facebook的方式:

[FBSession openActiveSessionWithReadPermissions:@[@"public_profile"]
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {


                                      // Retrieve the app delegate
                                      AppDelegate* appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
                                      // Call the app delegate's sessionStateChanged:state:error method to handle session state changes
                                      [appDelegate sessionStateChanged:session state:state error:error];

                                      if(!error && state == FBSessionStateOpen) {

                                          // Do something else
                                      }
                                  }];

希望这有帮助。