0

我正在尝试使用此代码从 Facebook 会话中检索访问令牌。

Session.openActiveSession(this,true,new Session.StatusCallback()
    {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if(state.isOpened())
            if (exception == null)
            {
              Log.v("Token",session.getAccessToken());
              .....

但是我没有得到访问令牌。这是返回的结果

{Session state:OPENED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[basic_info]}, appId:XXXXXXXXXXXXXXXXX}

我该如何解决这个错误?

4

1 回答 1

2
  1. 您是否在应用程序设置中输入了keyhash?使用 facebook 提供的标准代码生成哈希:

    PackageInfo info = getPackageManager().getPackageInfo("<your_package_name>",  PackageManager.GET_SIGNATURES);
    
    for (Signature signature : info.signatures)
    {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
    
  2. 仔细检查应用程序设置中的包名称


更新(另一种可能的解决方案)

覆盖onActivityResult并调用-

Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
于 2013-08-26T20:09:16.213 回答