我有问题,我不知道为什么,我希望你能帮助我!
我正在开发一个使用facebook图形api的Android应用程序。 它使用readpermission" user_likes"。当我这样做时: " me / likes" 一切正常。但是当我这样做时: 的我/喜欢?字段=事件{盖},名称
我收到了 OAuthException 。 errorMessage:必须使用活动访问令牌来查询有关当前用户的信息
总结:
我/喜欢
有效,但
我/喜欢?字段=事件
不起作用!
我得到的回应:
{Response:responseCode:400,graphObject:null,error:{HttpStatus:400,errorCode:2500,errorType:OAuthException,errorMessage:必须使用活动访问令牌来查询有关当前用户的信息。},isFromCache:假}
所以我对我的Access-Token进行了调试:
发布:1420803216(4小时前)
到期日:1425987216(约2个月)
有效:正确
原产地:Mobile Web Faceweb
范围:public_profile,basic_info,email,user_birthday,user_location,user_likes,user_friends
我真的不明白为什么我的访问令牌有这么多范围?我只是设置" user_likes"!
loginBtn.setReadPermissions(Arrays.asList("user_likes"));
这是我的代码:
private LoginButton loginBtn;
private TextView username;
private UiLifecycleHelper uiHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(this, statusCallback);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (TextView) findViewById(R.id.username);
loginBtn = (LoginButton) findViewById(R.id.fb_login_button);
loginBtn.setReadPermissions(Arrays.asList("user_likes"));
loginBtn.setUserInfoChangedCallback(new UserInfoChangedCallback() {
public void onUserInfoFetched(GraphUser user) {
if (user != null) {
username.setText("You are currently logged in as "
+ user.getName());
} else {
username.setText("You are not logged in.");
}
}
});
}
private Session.StatusCallback statusCallback = new Session.StatusCallback() {
public void call(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Log.d("MainActivity", "Facebook session opened.");
} else if (state.isClosed()) {
Log.d("MainActivity", "Facebook session closed.");
}
}
};
@Override
public void onResume() {
super.onResume();
Session session = Session.getActiveSession();
if (session != null && (session.isOpened() || session.isClosed())) {
onSessionStateChange(session, session.getState(), null);
}
uiHelper.onResume();
}
private void onSessionStateChange(final Session session,
SessionState state, Exception exception) {
if (state.isOpened()) {
// userInfoTextView.setVisibility(View.VISIBLE);
String token = session.getAccessToken();
Log.d("SESSION_TOKEN", token);
new Request(session, "me/likes?fields=events", null, HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
Log.i("INFO", response.toString());
// new
// GetResponses(userInfoTextView).execute(response);
}
}).executeAsync();
} else if (state.isClosed()) {
// userInfoTextView.setVisibility(View.INVISIBLE);
}
}
我做错了什么?我想我的会话或许可请求的内容是错误的...我希望有人可以帮助我!
亲切的问候 克里斯托弗答案 0 :(得分:2)
这是因为,在Facebook SDK for Android中,您必须将额外参数作为image.Source = new WriteableBitmap(
300,
300,
300,
300,
PixelFormats.Bgra32,
null
);
传递。
因此,对于您的情况,您应该以这种方式调用Graph对象:
Bundle
答案 1 :(得分:1)
API调用似乎是正确的,并且可以在API Explorer中使用。该错误的唯一合理解释是访问令牌无效。
将令牌放入调试器中,查看它是否有效以及user_likes
是否可用:https://developers.facebook.com/tools/debug/