我开始关注facebook API for Android教程并遇到了一个奇怪的问题。在预ICS设备上,代码正常工作,facebook登录正常,但不适用于较新的设备,因为它永远不会返回onComplete。
private void fbAuthentication() {
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Log.d("DEBUG", "Facebook user ID: " + user.getId());
}
mProgressDialog.dismiss();
}
}).executeAsync();
}
}
});
}
我从facebook教程获得的初始代码是使用已弃用的代码,所以我不知道为什么他们在官方开发者页面上有这个代码,但我已经将其更改为“newMeRequest”,如上所示。
答案 0 :(得分:0)
我在帖子ICS设备上运行此代码没有任何问题。我认为你没有公开会议。因为这个
if(session.isOpened())
请求仅发送给开放会话。检查以确定执行实际停止的位置
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Log.e("My Unique App TAG","The session is open. Sending newMeRequest");
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Log.d("DEBUG", "Facebook user ID: " + user.getId());
}
mProgressDialog.dismiss();
}
}).executeAsync();
}
else{
Log.e("My Unique App TAG","Session is NOT open");
}
}
});
答案 1 :(得分:0)
我通过确保它在主线程
上运行来使上述代码正常工作