我有一个问题,我不知道为什么,我希望你能帮助我!
我正在开发一个使用 facebook graph api 的 android 应用程序。它使用读取权限“user_likes”。当我提出这个要求时: “我/喜欢”一切正常。但是当我这样做时: me/likes?fields=events{cover},name
我得到一个OAuthException。errorMessage:必须使用活动访问令牌来查询有关当前用户的信息
综上所述:
- 我获得了具有所有必需权限的有效访问令牌。
- 我是我的应用程序的管理员,因此 Facebook 隐私政策不应发挥任何作用!
- 要求
我/喜欢
有效,但是
我/喜欢?字段=事件
不工作!
我得到的回应:
{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2500, errorType: OAuthException, errorMessage: 必须使用活动访问令牌来查询当前用户的信息。}, isFromCache:false}
所以我调试了我的访问令牌:
发布:1420803216(4小时前)
过期:1425987216(约2个月)
有效:真
来源:移动网络 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);
}
}
我在做什么错?我猜我的会话或权限请求有问题...我希望有人可以帮助我!
亲切的问候克里斯托夫