FBSDKGraphRequest如何获取个人资料封面照片?

时间:2016-02-18 18:05:28

标签: ios swift fbsdk

我无法获取封面资料图片......

在这里,我获得了profie图像:

let userProfile = "https://graph.facebook.com/" + userId + "/picture?type=large"

                    let profilePictureUrl = NSURL(string: userProfile)

                    let profilePictureData = NSData(contentsOfURL: profilePictureUrl!)
                    if (profilePictureData != nil) {

                        let profileFileObject = PFFile(data:profilePictureData!)
                        currentUser.setObject(profileFileObject!, forKey: "profilePicture")
                    }

哪个效果很好。

现在我在这里试图获得封面图片:

let coverPicture = "https://graph.facebook.com/" + userId + "/cover?type=large"


                    let coverPictureUrl = NSURL(string: coverPicture)
                    let coverPictureData = NSData(contentsOfURL: coverPictureUrl!)
                    if (coverPictureData != nil) {

                        let coverFileObject = PFFile(data:profilePictureData!)
                        currentUser.setObject(coverFileObject!, forKey: "coverPicture")
                    }

但这似乎不起作用?!

如果有人可以提供帮助,请执行以下操作:)

2 个答案:

答案 0 :(得分:0)

我使用Graph Api已经有一段时间了,但据我所知,即使API中有cover字段,您也无法直接访问用户的封面照片。

我能想到的最佳方法是通过以下方式请求用户的相册:

"https://graph.facebook.com/" + userId + "/albums"

在响应对象中,您将找到名为“封面照片”的相册:

  "created_time": "2016-01-01T20:00:00+0000",
  "name": "Cover Photos",
  "id": "123456789101112"

使用{id)/picture,您可以获得封面照片。

希望这能帮到你!

答案 1 :(得分:0)

获取Facebook封面图片非常有用。

Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        subscriber.onNext("Test");
        subscriber.onError(null);
    }
}).observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<String>() {
            @Override
            public void onCompleted() {
                System.out.println("onCompleted");
            }

            @Override
            public void onError(Throwable e) {
                System.out.println("onError");
            }

            @Override
            public void onNext(String s) {
                System.out.println("onNext");
            }
        });