我在Playstore上有一个应用程序,用于下载用户的封面照片并设置为抽屉的背景。
重要的是什么?
它停止工作我正在使用下面的链接,它工作就像一个魅力,但它不再工作,现在我只得到用户的ID但没有封面
之前的工作是什么?
https://graph.facebook.com/{my id}?fields=cover&access_token={my token}
我认为这可能是我在我的代码中没有注意到的事情,所以从Playstore下载了我的应用程序,我遇到同样的问题,封面没有下载,所以在这一点上我几乎可以确定问题是什么的与Facebook本身一起做
我相信是与权限有关,因为我得到了一个响应但不是封面的source
但是如果它与我的用户一起工作我不知道为什么这不再工作
我去了Facebook Developers页面,我尝试了这个
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"...?fields=cover",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
Log.d(TAG, response.toString());
}
}
).executeAsync();
可悲的是,这不起作用,在Facebook开发者页面中他们显示"...?fields={fieldname_of_type_CoverPhoto}"
我相信fieldname coverPhoto
是cover
,就像我看到here
这将记录
{Response: responseCode: 404, graphObject: null, error:
{HttpStatus: 404, errorCode: 803, errorType: OAuthException, errorMessage: (#803)
Some of the aliases you requested do not exist: ...}}
我试图删除3个点,我试图添加me?fields=cover
得到了这个:
{Response: responseCode: 404, graphObject: null, error:
{HttpStatus: 404, errorCode: 803, errorType: OAuthException, errorMessage: (#803)
Some of the aliases you requested do not exist: fields=cover}}
我试过这个
Bundle params = new Bundle();
params.putString("fields", "id,email,gender,cover,picture.type(large)");
new GraphRequest(AccessToken.getCurrentAccessToken(), "me", params, HttpMethod.GET,
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
if (response != null) {
try {
JSONObject data = response.getJSONObject();
Log.d(TAG, data.toString());
} catch (Exception e) {
e.printStackTrace();
Log.d(TAG, "ERROR");
}
}
}
}).executeAsync();
这会打印我的所有信息但没有封面
答案 0 :(得分:3)
我能解决这个问题
现在我们需要使用user_photos
权限,我相信这是最近发生的变化,因为我的应用程序在Playstore上工作了将近一个月而没有user_photos
记得你需要申请一个新的权限,你可以用这个
来做if(!AccessToken.getCurrentAccessToken().getPermissions().contains("user_photos")) {
LoginManager.getInstance().logInWithReadPermissions(
this,
Arrays.asList("user_photos"));
}
答案 1 :(得分:0)
在Facebooks API的早期版本中,可以在访问图形API时通过像往常一样在GET参数“ fields”中添加“ cover”作为值来获取用户的封面照片(?fields = cover)。这以前是有效的。
但是,Facebook用“ UserCoverPhoto”替换了“ cover”,然后最终消除了从用户API版本3.2检索封面照片的可能性,如以下官方链接所示: https://developers.facebook.com/docs/graph-api/reference/v3.2/user
即使允许的最旧的facebook API版本2.8也没有此功能。
遗憾的是,您必须构建另一个解决方案。
您将必须使用“用户/照片” API,然后允许他们选择要在应用程序中用作封面的照片。 https://developers.facebook.com/docs/graph-api/reference/user/photos/
一个不建议使用的解决方案(可能会违反TOS并可能导致您被禁)将围绕非私有用户的API构建解决方案。