Android FacebookAPI - newMeRequest永远不会返回onCompleted

时间:2013-11-17 11:34:53

标签: java android facebook facebook-graph-api

我开始关注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”,如上所示。

2 个答案:

答案 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)

我通过确保它在主线程

上运行来使上述代码正常工作