Facebook ios sdk График запроса допускает только одно поле в качестве параметра - PullRequest
0 голосов
/ 24 декабря 2018

Я занимаюсь разработкой приложения, которое требует входа на Facebook и данных пользователяОднако тот же код, который я использовал в предыдущих приложениях для входа в систему fb, не работает, и мне нужно делать отдельные графовые запросы для каждого поля, такого как имя, адрес электронной почты, изображение и т. Д.

В принципе, всякий раз, когда я пытаюсьсделать следующее:

connection.add(GraphRequest(graphPath: "/me", parameters:["fields":"email, name, picture"])) { httpResponse, result in
                switch result {
                case .success(let response):
                    guard let userInfo = response.dictionaryValue else {
                        return
                    }
                    userDict["email"] = userInfo["email"]! as Any
                    UserDefaults.standard.set(userDict["email"], forKey: userKeys.email)
                case .failed(let error):
                    print("Graph Request Failed: \(error)")
                }
            }

Я получаю эту ошибку:

Graph Request Failed: Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0, com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Syntax error "Expected end of string instead of "%"." at character 5: email%2C%20name%2C%20picture, com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=2500, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={
body =     {
    error =         {
        code = 2500;
        "fbtrace_id" = "FIc1yiUL+1z";
        message = "Syntax error \"Expected end of string instead of \"%\".\" at character 5: email%2C%20name%2C%20picture";
        type = OAuthException;
    };
};
code = 400;

И похожую ошибку, когда я делаю:

connection.add(GraphRequest(graphPath: "/me", parameters:["fields":"picture.type(large)"]))

Однако, это не 'выдает ошибку, когда я добавляю одно поле в качестве параметра.

Любая помощь будет принята с благодарностью:)

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я тоже получил ту же ошибку при попытке с последней версией.Я предлагаю вам перейти на предыдущую версию.Для меня ниже версии работают нормально:

pod 'FBSDKCoreKit', '~> 4.38.0' 
pod 'FBSDKLoginKit', '~> 4.38.0' 

После этого запустите

pod deintegrate

pod install

0 голосов
/ 24 декабря 2018

Попробуйте это

    let loginManager = FBSDKLoginManager()
    loginManager.logOut()
    loginManager.logIn(withReadPermissions: ["public_profile", "user_photos" ,"user_videos"], from: self) { (result, error) in
        if error != nil {

        } else if (result?.isCancelled)! {
            print("Cancelled")
        } else {               
            let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "email, id, name"])
            graphRequest.start(completionHandler: { (connection, result, error) -> Void in
                if ((error) != nil) {
                    print("Error: \(String(describing: error))")
                } else {
                    var userName:String?
                    var userID:String?
                    var userIEmail:String? = ""
                    if let user : NSString = (result! as AnyObject).value(forKey: "name") as? NSString {
                        userName = "\(user)"
                    }
                    if let id : NSString = (result! as AnyObject).value(forKey: "id") as? NSString {
                        userID = id as String
                        if userID == UserDefaultsHelper.username{
                            self.ClearUserData = false
                        }
                    }
                    if let email : NSString = (result! as AnyObject).value(forKey: "email") as? NSString {
                        userIEmail = email as String
                    }
                }
            })
        }
    }
...