为什么从 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();
我的应用程序的后端发出请求:
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();