我正在使用Facebook LoginManager
课程将Facebook登录整合到我的应用中。因此,当我第一次安装我的应用程序并尝试登录时,一切正常,我可以使用loginResult.getAccessToken().getToken()
轻松获取访问令牌。
但是一旦我卸载了&重新安装我的应用并尝试再次登录,它会向我抛出Facebook Exception
"无效的密钥哈希。密钥散列NDMi5aisFkTeU6BlER3L8JZ + wHw =与任何存储的密钥散列不匹配。在http://developers.facebook.com/apps/1646433015643090"
为什么这样,卸载应用程序时有什么事情要做。
我使用的代码
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)
{
}
});
答案 0 :(得分:1)
在onCreate方法中写下面的代码:
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
代码。
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
。
完成了。 !!
答案 1 :(得分:0)
在您的活动onCreate
中,请使用以下代码:
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) {
}
您会看到类似的内容:12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=
在Facebook开发者控制台中复制D/KeyHash:(936):
之后的所有内容,您就可以了。
之后,您可以从onCreate中删除此代码段。