आप Sha1 प्रमाणपत्र हस्ताक्षर से कीशैश निकाल सकते हैं। कुंजी हैश आमतौर पर निम्नलिखित तरीके से निकाले जाते हैं:
public static String getKeyHash(final Context context) {
PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);
if (packageInfo == null)
return null;
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "Unable to get MessageDigest. signature=" + signature, e);
}
}
return null;
}
आप देख सकते हैं कि हस्ताक्षर का SHA-1 संस्करण Base64 एनकोडेड है।
Google Play डेवलपर कंसोल में अनुप्रयोग पर हस्ताक्षर मेनू के अंतर्गत, आप शा -1 प्रमाण पत्र हस्ताक्षर कि इस तरह दिखता है देखेंगे:
SHA1: 3B:DA:A0:5B:4F:35:71:02:4E:27:22:B9:AC:B2:77:2F:9D:A9:9B:D9
असल में, आप क्या करना है एक बाइट सरणी में इसे बदलने के लिए है और बेस 64 एन्कोड कि बाइट सरणी। आप कुछ ऐसा कर सकते हैं:
byte[] sha1 = {
0x3B, (byte)0xDA, (byte)0xA0, 0x5B, 0x4F, 0x35, 0x71, 0x02, 0x4E, 0x27, 0x22, (byte)0xB9, (byte)0xAc, (byte)0xB2, 0x77, 0x2F, (byte)0x9D, (byte)0xA9, (byte)0x9B, (byte)0xD9
};
Log.e("keyhash", Base64.encodeToString(sha1, Base64.NO_WRAP));
आप इस कीशैश को फेसबुक एंड्रॉइड लॉगिन सेटिंग्स या जहां चाहें पंजीकृत कर सकते हैं।
यह बहुत अच्छी तरह से काम करता है। धन्यवाद! –
ऐप से दाएं खाते पर लॉग इन करते समय आपको फेसबुक से एक त्रुटि संदेश में यह हैश मान भी मिलता है। दिलचस्प बात यह है कि हालांकि हैश बेहद समान दिखते हैं, जब मैं उपर्युक्त विधि का उपयोग करके इसे प्रोग्रामेटिक रूप से उत्पन्न करता हूं, तो यह काम करता है, जहां इसे दृष्टि से टाइप करना नहीं था। – Chris
इस समाधान को खोजने में इतने घंटे बिताए, चीयर्स। –