Как получить доступ ко всем изображениям из Facebook в Swift 5? - PullRequest
0 голосов
/ 27 мая 2019

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

https://developers.facebook.com/docs/facebook-login/permissions/#reference-user_photos

Я также пытаюсь использовать Graph API из этого iOS: Как получить сборщик фотографий из альбома Facebook

мой код

для Логин

  func btnFbClicked()
        {
        fbLoginManager.logOut()
        fbLoginManager.loginBehavior = .web
        fbLoginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends","user_photos"], from: self) { (result, error) in

        if error != nil
        {
        print("error occured with login \(String(describing: error?.localizedDescription))")
        }

        else if (result?.isCancelled)!
        {
        print("login canceled")
        }

        else
        {
        if FBSDKAccessToken.current() != nil
        {

        FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"id, name, first_name, last_name, picture.type(normal), email,gender"]).start(completionHandler: { (connection, userResult, error) in

        if error != nil {

        print("error occured \(String(describing: error?.localizedDescription))")
        }
        else if userResult != nil {
        print("Login with FB is success")
        print(userResult as! [String:Any])

        self.fbData = (userResult as? NSDictionary)!

        let mutableFBDict = NSMutableDictionary(dictionary: self.fbData)
        print(mutableFBDict)


        if((mutableFBDict["email"] as? String) ?? "") == ""{


    //    self.showAlertNoHide(title: "", message: "If permission is granted then please set any email as a primary email in facebook general settings, then only facebook will return email to third party application. Sorry for the inconvenience.")

        return
        }


        var gender = Int64()
        if(mutableFBDict["gender"] as? String == "male")
        {
        gender = Int64(1)
        }
        else  if(mutableFBDict["gender"] as? String == "female")
        {
        gender = Int64(2)
        }
        else
        {
        gender = Int64(0)
        }



        self.fetchListOfUserPhotos()
}

для получения фотографий

func fetchListOfUserPhotos()
    {
        guard let id  = self.fbData["id"] as? String else
        {
            return
        }
        let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: id + "/photos" , parameters: ["fields":"user_photos"], httpMethod: "GET")


        //FBSDKGraphRequest(graphPath: id + "/photos" , parameters: nil, httpMethod: "GET")

        graphRequest.start(completionHandler: { (connection, result, error) -> Void in

            if ((error) != nil)
            {
                // Process error
                print("Error: \(error)")
            }
            else
            {
                print("fetched user: \(result)")

                let fbResult:[String:AnyObject] = result as! [String : AnyObject]

                self.userPhotos = fbResult["data"] as! NSArray?

                self.myCollectionView.reloadData()

            }
        })
    }

Отвечает Я получаю

Optional({
    data =     (
    );
})

, поэтому мой вопрос - получить доступ к изображениям, загруженным пользователем на Facebookили фейсбук меняет политику?

1 Ответ

0 голосов
/ 27 мая 2019
"fields":"user_photos"

user_photos - это разрешение, а не поле для запросов API. О существующих полях для фотографий, обратитесь к справке API: https://developers.facebook.com/docs/graph-api/reference/photo/

Если у вас нет фотографий, отладьте свой токен доступа и убедитесь, что он действительно является токеном пользователя с разрешением user_photos: https://developers.facebook.com/tools/debug/accesstoken/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...