如何使用Facebook SDK 4.6 for iOS登录?

时间:2015-09-15 02:16:39

标签: ios facebook-ios-sdk swift2

我正在使用此代码进行FB登录:

@IBAction func fbloginbtn(sender: AnyObject) {

    FBSDKLoginManager().logInWithReadPermissions(["public_profile", "email","user_location","user_about_me", "user_photos", "user_website"], handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
        if (error == nil){
            let fbloginresult : FBSDKLoginManagerLoginResult = result
            if(fbloginresult.grantedPermissions.contains("email"))
            {
                if((FBSDKAccessToken.currentAccessToken()) != nil){
                    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
                        if (error == nil){
                            //do sth
                        }
                    })
                }
            } 
        }
    })
}

但SDK 4.6中已弃用loginwithreadpermissions

我该如何更改此代码?

1 个答案:

答案 0 :(得分:13)

如果您查看文档,您也会看到提及替代api。 从FBSDKLoginManager的文档中可以看出:

- (void)logInWithReadPermissions:(NSArray *)permissions
                         handler:(FBSDKLoginManagerRequestTokenHandler)handler
__attribute__((deprecated("use logInWithReadPermissions: fromViewController:handler: instead")));

因此,有一个新方法,它还需要一个额外的UIViewController参数来确定登录序列的启动位置。正如文件所说:

- (void)logInWithReadPermissions:(NSArray *)permissions
              fromViewController:(UIViewController *)fromViewController
              handler:(FBSDKLoginManagerRequestTokenHandler)handler;

以及参数说明:

  

fromViewController - 要显示的视图控制器。如果没有,那么   最顶层的视图控制器将自动确定为最佳   可能的。

因为,只有一个附加参数,您可以将其添加到现有实现中,如下所示:

FBSDKLoginManager().logInWithReadPermissions(["public_profile", "others"],
                           fromViewController:self //<=== new addition, self is the view controller where you're calling this method.
                           handler: { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
})

最新的xcode还应该在您撰写logInWithReadPermissions时提供所有可用选项。