集成Facebook登录时无效的密钥哈希 [英] Invalid key hash while integrating Facebook login

查看:468
本文介绍了集成Facebook登录时无效的密钥哈希的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Facebook LoginManager类将Facebook登录信息集成到我的应用程序中.因此,当我第一次安装我的应用并尝试登录时,一切正常,并且可以使用loginResult.getAccessToken().getToken()轻松获取访问令牌.

I am using Facebook LoginManager class to integrate Facebook login in my app. So when I install my app first time and try to login everything works fine and I can easily get the access token using loginResult.getAccessToken().getToken().

但是一旦我卸载&重新安装我的应用程序并尝试再次登录,它会抛出Facebook Exception 无效的密钥哈希.密钥哈希NDMi5aisFkTeU6BlER3L8JZ + wHw =与任何存储的密钥哈希都不匹配.请在 http://developers.facebook.com/apps/1646433015643090 "

But once I uninstall & re-install my app and try to login again, it throws me an Facebook Exception "Invalid key hash. The key hash NDMi5aisFkTeU6BlER3L8JZ+wHw= does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/1646433015643090"

那为什么,在卸载应用程序时有什么事要做.

So why this, Is anything to do while uninstalling the app.

我使用的代码

FacebookSdk.sdkInitialize(getApplicationContext());
mCallbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().logInWithReadPermissions((Activity)mContext, Arrays.asList("email", "user_photos", "public_profile"));

        LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult)
            {
                new FacebookLoginLoaderTask(mContext, loginResult.getAccessToken().getToken()).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);

            }

            @Override
            public void onCancel()
            {
                System.out.print("Login Cancel");
            }

            @Override
            public void onError(FacebookException exception)
            {

            }
        });

推荐答案

在onCreate方法中编写以下代码:

Write below code in onCreate method :

try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "your package name", PackageManager.GET_SIGNATURES);
            for (android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign = Base64
                        .encodeToString(md.digest(), Base64.DEFAULT);

                Toast.makeText(getApplicationContext(), sign, Toast.LENGTH_LONG)
                        .show();
            }

        } catch (NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

调试您的应用.复制sign代码.

Debug your app. copy the sign code .

After that go to your facebook app -> go to settings -> paste this key hashes over there  after that make tab to yes for `Single Sign On` and saved it.

现在转到status & Review -> make make it public.

完成了. !!

这篇关于集成Facebook登录时无效的密钥哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆