2015-10-26 17 views
11

के बजाय 32 वर्ण लंबा कुंजी हैश मैं निम्न आदेश का उपयोग कर रहा एंड्रॉयडKeytool 28

.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64 

के लिए के लिए फेसबुक ऐप सांत्वना कुंजी हैश उत्पन्न करने के लिए Facebook developers SDK help

प्रति सहायता पृष्ठ के रूप में और कम से कहा उत्पन्न करता है डेवलपर्स कंसोल भी है, कुंजी हैश 28 वर्ण लंबा होना चाहिए, हालांकि कीटोल 32 अक्षरों की लंबी कुंजी उत्पन्न कर रहा है।

जावा संस्करण: विंडोज एंड्रॉयड के लिए 7

उत्पन्न: ओएस jdk1.8.0_31।

संपादित

प्रति सुझाव के रूप में @ Shreyash-mashru से, मैं keyhash

try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "my.package.name", 
       PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString()); 

    } catch (NoSuchAlgorithmException e) { 
     Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString()); 
    } 

हालांकि अगर किसी को अभी भी मेरी मदद कर सकते बाहर क्यों कमांड लाइन टूल पैदा कर रहा है प्राप्त करने के लिए निम्नलिखित कोड का इस्तेमाल किया 28 के बजाय 32 चार लंबी कुंजी हैश ...

+1

सुझाव। उस विधि का उपयोग करना आसान है जिसे आप उपरोक्त लिंक से प्राप्त कर सकते हैं जिसे आपने पोस्ट किया है और आप इसे अपने लॉग में प्राप्त कर सकते हैं। और इसे अपने फेसबुक ऐप से कॉपी और पेस्ट करें। [उस पृष्ठ का लिंक] (https: //developers.facebook।कॉम/डॉक्स/एंड्रॉइड/हो रही-शुरू # समस्या निवारण) –

+0

धन्यवाद @शेशशशशू इसे आजमाएंगे। लेकिन कोई विचार क्यों keytool 28 के बजाय 32 वर्ण उत्पन्न करता है? – Jalpesh

उत्तर

29

इस समस्या में भी आया, मेरे लिए मैं विंडोज पावरहेल का उपयोग कर रहा था और यह 32 वर्ण कुंजी उत्पन्न करता रहा। जब मैं सादे पुराने cmd पर स्विच करता हूं तो यह अपेक्षा के अनुसार काम करता है।

+0

दिलचस्प है ... मैं भी शक्तियों का उपयोग कर रहा था। यह निश्चित रूप से जांच जाएगा जब किसी दिन मैं विंडोज़ पर वापस आऊंगा। – Jalpesh

+0

मेरे साथ समान है, हालांकि यह 32 char लंबा नहीं बना रहा था, लेकिन यह फेसबुक द्वारा अमान्य दिखा रहा था (gving त्रुटि: यह = उस तरह अंत में होना चाहिए), cmd का उपयोग किया और पूरी तरह से – Luckyy

+0

काम किया ठीक है, यह समाधान मेरी विशेष समस्या के लिए पूरी तरह से काम करता है । – Jalpesh

0
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64 

यह मेरे लिए ठीक काम कर रहा है। दुबारा कोशिश कीजिये।

+0

हैश 28 घंटे लंबा है? क्या आप पर्यावरण और जावा संस्करण का उल्लेख कर सकते हैं? – Jalpesh

+0

हां, जावा (टीएम) एसई रनटाइम पर्यावरण (निर्माण 1.7.0_80-बी 15) –

0

मुझे एक ही समस्या थी। ओपनएसएसएल (64 बिट) के मेरे मौजूदा संस्करण का उपयोग करने के साथ इसका कुछ संबंध था। मैंने 32 बिट संस्करण from here डाउनलोड किया और इसे c: \ openSSL पर स्थापित किया। आदेश तब एसएसएल के इस संस्करण को इंगित करता है और मुझे अपना 28 चरित्र हैश मिला।

Keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ USERNAME.android \ debug.keystore" | "C: \ OpenSSL \ बिन \ openssl" SHA1 -binary | "C: \ OpenSSL \ बिन \ openssl" बेस 64

1

उम्मीद है कि इस सवाल का जवाब भी देर नहीं हुई है (मैं जानता हूँ कि प्रश्न एक वर्ष से अधिक पुराना है लेकिन मैं इस मुद्दे पर एक Google खोज के पहले परिणाम से यहां पहुंचे)।

जेनरेटेड हैश 32 वर्ण हैं क्योंकि एक कैरिज रिटर्न है और अंत में एक नई लाइन जोड़ा गया है। इसे ठीक करने के लिए आप या तो

हैश के अंतिम 5 वर्ण हटाएं, और अंत में "=" जोड़ें। उदाहरण के लिए: - "1234567890abcdefghijklmnopqrstuv" (32 वर्ण)> "1234567890abcdefghijklmnopq =" (28 वर्ण)

या

पॉप एक JavaScript कंसोल, और उपयोग खोलें:

btoa(atob(hashString).slice(0, -2)) 

कहाँ "hashString" आपका 32 चरित्र हैश है।

संबंधित मुद्दे