【问题标题】:Android Facebook Handle SessionAndroid Facebook 处理会话
【发布时间】:2014-02-24 23:49:38
【问题描述】:

我正在尝试使用 facebook sdk for android 获取我的 facebook 帐户的用户名和用户 ID,我正在使用以下 sn-p 代码:

final Session session = Session.getActiveSession();
    if (session != null && session.isOpened()) {
        // If the session is open, 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) {
                // If the response is successful
                if (session == Session.getActiveSession()) {
                    if (user != null) {
                        user_ID = user.getId();//user id
                        profileName = user.getName();//user's profile name
                        userNameView.setText(user.getName());
                    }   
                }   
            }   
        }); 
        Request.executeBatchAsync(request);
    } 

问题是会话为空,我应该如何处理会话管理?我的意思是激活会话的代码和停用会话的代码? 我想使用自己的退出和登录按钮自己处理与 facebook 的会话,但找不到管理会话的代码。

提前非常感谢!

【问题讨论】:

    标签: android facebook session button login


    【解决方案1】:

    您的Session.getActiveSession()null,因为您没有正确初始化会话。 看看下面的代码:

    public class MyActivity extends Activity {
    
    private UiLifecycleHelper uiHelper;
        private Session.StatusCallback callback = new Session.StatusCallback() {
            @Override
            public void call(final Session session, final SessionState state, final Exception exception) {
            /** If your session status has changed you can dead with that using this callback. */
           }
        };
    
    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
           // Your code goes here
    
           /* Initializing a valid session. */
           uiHelper = new UiLifecycleHelper(this, callback); //callback can be null
           uiHelper.onCreate(savedInstanceState);
    
           Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
        }
    
    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          uiHelper.onActivityResult(requestCode, resultCode, data);}
        }
    
    @Override
        protected void onPause() {
         super.onPause();
         uiHelper.onPause();
        }
    
    @Override
        protected void onStop() {
         super.onStop();
         Session.getActiveSession().removeCallback(callback);
        }
    
        @Override
        public void onDestroy() {
        super.onDestroy();
         uiHelper.onDestroy();
        }
    }
    

    如果这对你有用,请告诉我。

    【讨论】:

    • 那么我需要使用 UiLifecycleHelper 来处理 facebook 的 session 吗?
    • @DarkLink,是的!看看 Facebook 开源 SDK,你会发现UiLifecycleHelper 创建了一个新会话。
    • 而onActivityResult的方法是什么?
    • @DarkLink, onActivityResult 确保您在单击权限对话框时收到回调,例如
    猜你喜欢
    • 2014-04-03
    • 2017-05-27
    • 2011-12-23
    • 2013-05-19
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多