集成Facebook登录时无效的密钥哈希 [英] Invalid key hash while integrating Facebook login
问题描述
我正在使用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屋!