关于ios:登录Facebook时获取空值以获取用户电子邮件ID swift 3

Getting null value while logging to Facebook to get users email ID swift 3

我试图通过允许用户通过Facebook登录来获取用户的信息。我试图获取信息,但它返回空值。我做错什么了吗?我使用我创建的自定义登录按钮。下面是我当前的代码,我得到"无可用信息"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@IBAction func fbLogin(_ sender: AnyObject) {

     let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
    fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in
        if (error == nil){
            let fbloginresult : FBSDKLoginManagerLoginResult = result!
            if fbloginresult.grantedPermissions != nil {
            if(fbloginresult.grantedPermissions.contains("email"))
            {
                self.getFBUserData()
            }
            }else {
                print("No information available")    
            }

        }
    }

}

下面是我的fb

的Appdelegate.swift代码

AppDelegate类:UIResponder,UIApplicationDelegate {

1
2
3
4
5
6
7
8
9
10
var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    }

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {

    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: sourceApplication, annotation: annotation)

} ??

1
2
3
func applicationDidBecomeActive(_ application: UIApplication) {
    FBSDKAppEvents.activateApp()
}

} ??


我终于能够使它正常工作。我不得不替换下面的函数

func应用程序(应用程序:UIApplication,openURL网址:NSURL,sourceApplication:String ?,注释:AnyObject?)-> Bool {

返回FBSDKApplicationDelegate.sharedInstance()。application(应用程序,打开:URL作为URL !, sourceApplication:sourceApplication,批注:批注)

} ??

with

1
2
3
func application(_ app: UIApplication, open url: URL, options: [String : AnyObject] = [:]) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(app,open: url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String,annotation: options [UIApplicationOpenURLOptionsAnnotationKey])
}

一旦我更改它,就会出现以下错误-

可选(错误域= com.facebook.sdk.login代码= 308 "(空)")

似乎钥匙扣有问题,苹果已经改变了ios10的工作方式。我引用了链接-https://stackoverflow.com/a/38799196/6652247,它起作用了。我现在可以获取用户信息。

感谢Hoang Tran ..