2017-07-04 7 views
0

Swift3 iOS 10: Facebookのユーザーからユーザー情報を取得しようとするとエラーが発生します。次のコードスニペットを使用すると、ユーザーデータにアクセスでき、本当にうまく機能します。別のアカウントでログインすると、エラーに変わります。時にはログインはFacebookで失敗しました。あるフェイスブックアカウントで動作しますが、別のアカウントで試してみるとエラーになります

//Button 
@IBAction func FBBtnPressed(_ sender: Any) { 
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
    fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in 
     if (error != nil){ 
      print(error) // Failed here... 
     }else{ 
      let fbloginresult : FBSDKLoginManagerLoginResult = result! 
      if(fbloginresult.grantedPermissions.contains("email")) 
      { 
       self.fetchProfile() //This function never calls as I change login account, it turns into error (Error 304) 
      } 
     } 
    } 
} 
//Fetch user info... 
func fetchProfile(){ 
    let parameters = ["fields": "name, email, gender, birthday, location, id, picture.type(large)"] 

    FBSDKGraphRequest(graphPath: "me", parameters: parameters).start(completionHandler: { 
     connection, result, error -> Void in 
     if error != nil { 
      print("longin error =\(String(describing: error))") 
     } else { 
      if let userInfo = result as? [String:Any]{ 
       //Get user info... 
       print(userInfo["name"]) 
       print(userInfo["email"]) 
       print(userInfo["gender"]) 
       print(userInfo["birthday"]) 
       print(userInfo["location"]) 
       print(userInfo["id"]) 

       } 
      } 
     } 
    }) 
} 
+0

の下nil.iを使用していますでしょうか? – dirkgroten

+0

あなたのFacebookアプリIDで.plistを設定しましたか? – dirkgroten

+0

Error Domain = com.facebook.sdk.login Code = 304 "(null)" –

答えて

0

fbloginresult.grantedPermissionsが印刷されてどのようなエラーコード

self.fbLoginManager = FBSDKLoginManager.init() 
    fbLoginManager.loginBehavior = FBSDKLoginBehavior.web 
    self.fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in 
      if (error == nil) { 
       let fbloginresult : FBSDKLoginManagerLoginResult = result! 
       if fbloginresult.grantedPermissions != nil && fbloginresult.grantedPermissions.contains("email") { 
        if((FBSDKAccessToken.current()) != nil){ 
         FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id, first_name, last_name, email, gender, birthday, location"]).start(completionHandler: { (connection, result, error) -> Void in 
          if error != nil { 
           print(error?.localizedDescription ?? "error in facebook login...!") 
           return 
          } 
          if let dict = result as? NSDictionary { 
           print("facebook login result --->\n\(dict)") 
           guard let id = dict["id"] else { 
            print("Ooops... id = nil") 
            return 
           } 
           let firstName: String = dict["first_name"] as? String ?? "" 
           let lastName : String = dict["last_name"] as? String ?? "" 
           let email : String = dict["email"] as? String ?? "" 

           print(firstName,lastName,email) 

           // here you can process your next step 
           self.fbLoginManager.logOut() 
          } 
         }) 
        } 
       } else { 
        print("facebook ---> login canceled") 
       } 
      } else { 
       print(error?.localizedDescription ?? "facebook login has error") 
      } 
     } 
関連する問題