0

几个问题。

问题 1:跟踪“成功!!!” 注册,但我无法在 onCompleted 中得到任何东西来跟踪。然而,在我的应用程序中,我登录了我的 Facebook 帐户。

问题 2:当我让 userId 在 onCompleted 内修改时,我无法获得修改“范围外”字符串的结果

String userId;


        // If session is open
        if (session != null && session.isOpened()) {    
            Log.d("Trace","Made it in!!!");

            //  Make an API call to get user data
            // and define a new callback to handle the response
            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    Log.d("Trace","Starting onComplete");
                    Session session = Session.getActiveSession();

                    // If current session matches active session
                    if (session == Session.getActiveSession()) {
                        Log.d("Trace","Session is active.");
                        if (user != null) {

                            // Set the Textview's text from user's id
                            userId = user.getId();
                            Log.d("Trace", "userId after PULL FROM GRAPH: " + userId);
                            //Log.d("Trace", userId);

                        } // end if user != null   
                    }   // end if session == Session.getActiveSession()                 
                } // end onCompleted
            }); // end request
        } // end session open check

任何和所有的帮助表示赞赏。

4

1 回答 1

1

问题 1:您已经创建了请求,但没有执行它。创建请求后尝试添加 request.executeAsync() 。或者,您也可以调用 Request.executeMeRequestAsync(Session, Callback) 方法立即执行请求。

问题 2:这是 Java 的限制。您使用 GraphUserCallback 创建的是一个匿名内部类,您不能直接修改该类之外的状态。解决此问题的一种快速方法是使用实​​例变量(在类中声明 userId)而不是临时变量(在方法中声明)。

于 2012-12-03T18:01:08.350 回答