【发布时间】:2015-03-07 12:40:07
【问题描述】:
我有一个问题,我不知道为什么,希望你能帮助我!
我正在开发一个使用 facebook graph api 的 android 应用程序。 它使用读取权限“user_likes”。当我提出这个要求时: “我/喜欢” 一切正常。但是当我这样做时: me/likes?fields=events{cover},name
我得到一个 OAuthException。 errorMessage:必须使用活动访问令牌来查询有关当前用户的信息
总结:
- 我获得了具有所有必需权限的有效访问令牌。
- 我是我的应用程序的管理员,因此 Facebook 隐私政策不应发挥任何作用!
- 请求
我/喜欢
有效,但是
我/喜欢?fields=events
不起作用!
我得到的回应:
{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 2500, errorType: OAuthException, errorMessage: 必须使用活动访问令牌来查询当前用户的信息。}, isFromCache:错误}
所以我调试了我的访问令牌:
发布: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);
}
}
我做错了什么?我猜我的会话或权限请求有问题...希望有人能帮助我!
亲切的问候 克里斯托夫
【问题讨论】:
标签: facebook facebook-graph-api facebook-android-sdk facebook-graph-api-v2.0 facebook-permissions