安卓Facebook SDK - session.isOpened()始终返回false

5

我想我按照Facebook的教程进行操作,但是它无法正常工作。我正在尝试通过FB登录,然后获取用户信息。我的代码如下:

 private Session.StatusCallback statusCallback = new Session.StatusCallback() {

        @Override
        public void call(Session session, SessionState state, Exception exception) {
            System.out.println("GOOD");
            if (session.isOpened()) {
                System.out.println("AWESOME");
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                  // callback after Graph API response with user object
                  @Override
                  public void onCompleted(GraphUser user, Response response) {
                      m_user = user;
                      System.out.println("Hello " + user.getName());
                  }
                });
            }
        }

然后:
public void onBtnFacebookClick(final View v) {
      Session session = Session.getActiveSession();
      if (session == null) {
          session = new Session(this);
          Session.setActiveSession(session);
          if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
              session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
          }
      }
      if (!session.isOpened() && !session.isClosed()) {
          session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
      } else {
          Session.openActiveSession(this, true, statusCallback);
      }
  }

但似乎“AWESOME”从未被打印出来(“GOOD”被打印了),尽管我已成功登录FB。 或者我不理解session.isOpened()的含义?
1个回答

9

好的,现在工作正常了。我遇到了两个问题。一个是不正确的哈希密钥,我按照这些说明进行了修复。 另一个是我不知道我必须重写这个方法:

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      Session.getActiveSession()
          .onActivityResult(this, requestCode, resultCode, data);
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接