1

I am new in swift. Can anyone tell me how to get phone number field from facebook.

Here button is pressed :

@IBAction func fbButtonAct(_ sender: Any) {
        view.endEditing(true)

        let fbLogin : FBSDKLoginManager = FBSDKLoginManager()

        let loadingOverlay = loadingOnScreen(self.view.frame)
        self.view.addSubview(loadingOverlay)

        fbLogin.logIn(withReadPermissions: ["email"], from: self) { (result, err) in
            if(err != nil){
                print("custom fb login failed",err)
                loadingOverlay.removeFromSuperview()
                return
            }
            if (result?.isCancelled)!{
                loadingOverlay.removeFromSuperview()
                return
            }
            self.dataGettingFromFB(fbLogin, loadingOverlay: loadingOverlay)
            print(result?.token.tokenString)

        }
    }


func dataGettingFromFB(_ fbLogin:FBSDKLoginManager, loadingOverlay: UIView){
        FBSDKGraphRequest(graphPath: "/me", parameters: ["fields":"id, email, first_name, last_name, picture.type(large), gender, phone"]).start { (connection, result, err) in

            if (err != nil){
                print("failed to start graph request:",err)
                loadingOverlay.removeFromSuperview()
                return
            }

            let fbDetails = result as! NSDictionary

            var email : String? = fbDetails["email"] as? String
            if(email == nil){
                email = ""
            }

            let firstName = fbDetails["first_name"] as! String
            let id = fbDetails["id"] as! String
            let lastName = fbDetails["last_name"] as! String

            fbLogin.logOut()
        }
    }
byJeevan
  • 3,728
  • 3
  • 37
  • 60
Gaurav
  • 97
  • 3
  • 9

1 Answers1

-1

Try this : put the public_profile to read permission

fbLogin.logIn(withReadPermissions: ["email","public_profile"], from: self)

Bhupat Bheda
  • 1,968
  • 1
  • 8
  • 13
  • not working Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={ body = { error = { code = 100; "fbtrace_id" = "D2cL/IolPWC"; message = "(#100) Tried accessing nonexisting field (phone) on node type (User)"; type = OAuthException; }; }; code = 400; }, – Gaurav Apr 21 '17 at 12:08
  • , com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=(#100) Tried accessing nonexisting field (phone) on node type (User), com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0}) – Gaurav Apr 21 '17 at 12:09
  • @Gaurav add user_friends permission also – Bhupat Bheda Apr 21 '17 at 12:12
  • stilll not working same error – Gaurav Apr 21 '17 at 12:22
  • 1
    @Gaurav No, there is no way to get the phone number. There is no permission, and there is no data field for this in the API. – Bhupat Bheda Apr 21 '17 at 12:30
  • just asking how did uber pick up phone number by facebook login – Gaurav Apr 21 '17 at 12:59
  • same error here trying to access phone number and getting same error. – Umar Farooq Feb 21 '19 at 10:58