使用android studio时的facebook哈希键

nul*_*ter 27 android facebook

我正在使用android studio开发一个使用facebook sdk的应用程序.

当我使用以下命令

C:\Program Files\Java\jdk1.7.0_21\bin>keytool -exportcert -alias androiddebugkey
 -keystore "C:\Users\ninad\.android\debug.keystore" | "D:\OpenSSL\bin\openssl" s
ha1 -binary |"D:\OpenSSL\bin\openssl" base64
Run Code Online (Sandbox Code Playgroud)

它返回y5EquINHD6DvwVJFyJTuUEY3NSU =

当使用此哈希键时,facebook会显示错误

android_key参数无效.密钥c33Tm0FL_-kxyaPZq1JBLDh767U与任何允许的密钥都不匹配.

使用eclipse和android studio时,facebook需要的哈希键是否不同?其中哪些是我正确的哈希键?

我在facebook中添加了我的应用程序的哈希键.仍然应用程序显示无效的android_key参数.

Tar*_*run 68

你为什么不尝试这个代码并检查你正在使用的哈希键.来自facebook文档:

除了仔细检查密钥哈希生成步骤之外,还有另一个选项可确保您使用正确的密钥哈希.它涉及更改其中一个示例应用程序中的代码以打印发送到Facebook的签名.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.package", 
                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) {

    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

这是创建facebook哈希键的链接:

public class FacebookHashKeyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_facebook_hash_key);
        try {
            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));
            }
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码来自这里.

  • 我们不应该使用getPackageName()而不是硬编码吗? (3认同)

小智 5

只需在 oncreate 方法中运行它

private void printHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "-----------PUT 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));
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)