为什么从 graph.facebook 返回的个人资料图片网址会导致 404

Why do profile pic URLs returned from graph.facebook result in a 404

我的应用程序的后端发出请求:
https://graph.facebook.com/v2.8/me?access_token=<firebase-access-token>&fields=id,name,first_name,birthday,email,picture.type(large){url}&format=json&method=get&pretty=0&suppress_http_code=1

我得到一个成功的 (200) 响应,其中包含我期望的 JSON 数据和 picture 字段:

"picture": {
    "data": {
        "url": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=<asid>&height=200&width=200&ext=<ext>&hash=<hash>"
    }
}

(代替 <asid><ext> 的是数字,<hash> 是一些字母数字字符串)。

但是,当我向上面的 platform-lookaside URL 发出 GET 请求时,我收到 404 错误。

自从我对同一用户的第一个 graph.facebook 请求以来,它每次都在发生。第一个返回 platform-lookaside URL 指向正确的图像(不确定这是否只是巧合)。

我做错了什么或者这可能是 Facebook API 的错误?

FB 目前似乎有一些 CDN 问题,因此您的问题可能只是暂时的。您还应该在 fb.com 的某些地方看到 missing/broken 图片。调试问题的最糟糕时间 :)

试试这个对我有用的代码

    GraphRequest request = GraphRequest.newMeRequest(
                AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        // Insert your code here
                        try {
                            String name = object.getString("name");
                            String email = object.getString("email");
                            String last_name = object.getString("last_name");
                            String first_name = object.getString("first_name");
                            String middle_name = object.getString("middle_name");
                            String link = object.getString("link");
                            String picture = object.getJSONObject("picture").getJSONObject("data").getString("url");
                            Log.e("Email = ", " " + email);
                            Log.e("facebookLink = ", " " + link);
                            Log.e("name = ", " " + name);
                            Log.e("last_name = ", " " + last_name);
                            Log.e("first_name = ", " " + first_name);
                            Log.e("middle_name = ", " " + middle_name);
                            Log.e("pictureLink = ", " " + picture);

                        } catch (JSONException e) {
                            e.printStackTrace();
                            Log.e("Sttaaaaaaaaaaaaaaaaa", e.getMessage());
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,email,link,last_name,first_name,middle_name,picture");
        request.setParameters(parameters);
        request.executeAsync();