1

このコードを試して、iOSアプリに必要なユーザー情報を取得しようとしました.func loginButtonを押すと、ログインしてユーザー名と電子メールを取得する必要があります.

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {

    if( error != nil)
    {
        println(error.localizedDescription)
        return
    }

    if let userToken = result.token{
        //Get user acces token 
        let token:FBSDKAccessToken=result.token

        println("Token = \(FBSDKAccessToken.currentAccessToken().tokenString)")

        println("User ID = \(FBSDKAccessToken.currentAccessToken().userID)")


        let protectedPage = self.storyboard?.instantiateViewControllerWithIdentifier("ProtectedPageViewController") as! ProtectedPageViewController
        let protectedPageNav = UINavigationController(rootViewController: protectedPage)

        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

        appDelegate.window?.rootViewController = protectedPageNav

    }

    //Show user information
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)

    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

        if ((error) != nil)
        {
            // Process error
            println("Error: \(error)")
        }
        else
        {
            println("fetched user: \(result)")
            let userEmail : NSString = result.valueForKey("email") as! NSString
            println("User Email is: \(userEmail)")
            let userName : NSString = result.valueForKey("name") as! NSString
            println("User Name is: \(userName)")

        }
    })
}

メールとユーザー名を出力する必要があるというユーザー情報を表示するコメントがあります。名前は出力されますが、メールは出力されず、次のエラーが表示されます: FBSDKLog: Starting with Graph API v2.4, GET requests for /me should include an明示的な「フィールド」パラメータ、、私が間違っていることを誰でも知っていますか? ありがとうございました

4

3 に答える 3

4

パラメータを追加する必要があると思います。

次のように変更してみてください。

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"name, email"])
于 2015-09-11T01:40:11.910 に答える
1

私も同じ問題を抱えており、目的cに対してこの解決策を見つけました

 NSMutableDictionary*params = [NSMutableDictionary dictionary];
[params setValue:@"fields" forKeyPath:@"fields"];
[params setValue:@"name" forKeyPath:@"name"];
[params setValue:@"email" forKeyPath:@"email"];

パラメータの値をparamsに設定すると、これが機能します

于 2015-09-18T08:13:43.540 に答える