Facebook Android SDK在登录后无法打开Session

 nw3344_575 发布于 2022-12-31 12:07

1)这个问题多次出现,而且awnser总是"你有错误的Key Hash".

2)Facebook文档告诉我们使用此代码来获取我们的Key Hash:

keytool -exportcert -alias MyKeyAlias -keystore path\to\my\Key | openssl sha1 -binary | openssl base64

3)好的,这给了我钥匙:1yl**********Q3A

当我尝试登录时,我收到以下消息:com.facebook.http.protocol.ApiException:(#404)密钥哈希XHA**********q10与任何存储的密钥哈希都不匹配.

4)然后我将XHA**********q10复制并粘贴到我的应用程序设置上,这也不是我的密钥.

5)所以,我阅读的文档是一个代码,可以为您提供正确的Key Hash.这段代码:

// Add code to print out the key hash
try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.facebook.samples.hellofacebook", 
            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));
        }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

有效!给我这个哈希:+ HA**********q0 =

6)我把最后一个哈希放在应用程序设置上,是,现在我可以连接!但是,现在我无法打开一个会话!

我正在使用以下代码:

public class FBActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_view);

        System.out.println("Start Facebook login");
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            public void call(Session session, SessionState state, 
                                              Exception exception) {
                System.out.println("Call");
                if (session.isOpened()) {
                    System.out.println("Open");
                    Request.newMeRequest(session, new Request.GraphUserCallback() {
                        public void onCompleted(GraphUser user, Response response) {
                            System.out.println("Complete");
                            if (user != null) {
                                System.out.println(user.getName());

                            } else {
                                System.out.println("User NULL");
                            }
                        }
                    }).executeAsync();
                } else {
                System.out.println("Not open");
            }

        });
    }
}

日志是:

"开始Facebook登录

呼叫

没开

呼叫

没开"

我不知道我还能做什么,因为我已经有了正确的Key Hash,我可以登录.

1 个回答
  • 我想到了:

    缺少以下方法.刚添加它,一切正常.

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

    2022-12-31 12:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有