एंड्रॉइड-फेसबुक ऐप के लिए कुंजी हैश


229

मैं एक एंड्रॉइड ऐप पर काम कर रहा हूं, जिसमें मैं फेसबुक पोस्ट करने की सुविधा को एकीकृत करना चाहता हूं। मैंने फेसबुक-एंड्रॉइड एसडीके डाउनलोड किया, और मुझे वहां रीडमीएमडी (टेक्स्ट फाइल) मिली, जिसमें एंड्रॉइड के लिए कुंजी हैश उत्पन्न करने का उल्लेख है। मैं इसे कैसे उत्पन्न करूं?


2
आप इस लिंक की जाँच कर सकते हैं javatechig.com/2012/12/10/…
नीलांचल

2
जाँच इस जो लोग अभी भी समस्या का सामना कर रहे के लिए,
चिंतन Khetiya

इसका उपयोग करके डिबग और रिलीज़ मोड के लिए HashKey उत्पन्न करें। stackoverflow.com/questions/7506392/…
नईम इब्राहिम

चाबियाँ देखने के लिए इस वीडियो को देखें
जल्द ही सैंटोस

जवाबों:


310

ये रहे चरण-

  1. से डाउनलोड openssl गूगल कोड (आप एक 64 बिट मशीन है, तो आप चाहिए डाउनलोड openssl-0.9.8e X64 नहीं नवीनतम संस्करण)

  2. इसे निकालें। एक फ़ोल्डर बनाएं- C में OpenSSL: / और निकाले गए कोड को यहां कॉपी करें।

  3. debug.keystore फ़ाइल पथ का पता लगाएं। यदि आपको नहीं मिला, तो C: / में एक खोज करें और अगले चरण में कमांड में पाथ का उपयोग करें।

  4. अपने keytool.exe पथ का पता लगाएं और उस डीर / कमांड प्रॉम्प्ट पर जाएं और इस कमांड को 1 पंक्ति में चलाएं-

    $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Documents and Settings \ Administrator.android \ debug.keystore" | "C: \ OpenSSL \ bin \ opensl" sha1 -binary | "C: \ OpenSSL \ bin \ opensl" base64

    • यह पासवर्ड के लिए पूछेगा, Android रखो
    • बस इतना ही। यू को की-हैश मिलेगा

अधिक जानकारी के लिए यहां जाएं


5
इस जवाब ने लगभग मेरे लिए Win7 x64 पर काम किया। हालाँकि, परिणामस्वरूप एन्कोडेड प्रमाणपत्र गलत था। नीचे दिए गए ब्रायन बेडार्ड का उत्तर सही प्रमाणित मूल्य का उत्पादन करेगा। मुझे लगता है कि खिड़कियों पर पाइपिंग किसी तरह अपराधी है।
वॉल्ट आर्मर

10
64 बिट उपयोगकर्ताओं के लिए ध्यान दें: यह संस्करण के साथ काम करता है Opensl-0.9.8e X64 केवल Opensl-0.9.8k X64 के साथ उपयोग नहीं करते
निकोला पेलुचेती 19

मैंने अपने सिस्टम के लिए Opensl-0.9.8e X64 डाउनलोड किया और इसे निकाला। इसमें कुछ डेटा के साथ एक फ़ाइल के अलावा कुछ भी नहीं है। कृपया मुझे और जानने में मदद करें।
रविकिरण

2
विंडोज़ सिस्टम में जावा के बिन फ़ोल्डर में कमांड को निष्पादित किया जाना चाहिए।
एंटीरोमेट

1
@ हिनेशर्मा बाहर छोड़ने की कोशिश करो $
प्रतिबंध-जियोइंजीनियरिंग

241

[संपादित २०२०] -> अब मैं पूरी तरह से यहाँ जवाब देने की सलाह देता हूं , जिस तरह से एंड्रॉइड स्टूडियो का उपयोग करना आसान है, तेज और किसी भी कोड को राइट करने की आवश्यकता नहीं है - नीचे का एक दिन ग्रहण के दिनों में वापस था :) -।

आप किसी भी गतिविधि में इस कोड का उपयोग कर सकते हैं। यह लॉगकैट में हैशकी लॉग करेगा, जो डीबग कुंजी है। यह आसान है, और यह एसएसएल का उपयोग करने की तुलना में एक राहत है।

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

कुंजी जानने के बाद आप कोड हटा सकते हैं;)


27
दोस्तों, ध्यान रखना, एपीके बनाने के बाद, कुंजी हैश को बदल दिया जाता है! चूँकि इस कोड का उपयोग करने से डिबग कीस्टोर हैश मिलता है, लेकिन एपीके बनाते समय, यह एक और हैश है, यह एमुलेटर पर उर एपीके की कोशिश करने के बाद लॉग से कैप्चर करेगा, फिर कोड हटाएं और इस लॉग के बिना फिर से निर्यात करें :) - मुझे पता है कि यह एक परेशानी है: D लेकिन मेरे लिए यह
कीटूल

4
Opensssl हमेशा मुद्दे बना रहा है। यह तरीका सबसे अच्छा है। बस एक रिक्त एप्लिकेशन बनाएं, और कुंजी मुद्रित करें, इसका उपयोग करें। धन्यवाद दोस्त!!
Anhirk दसरप

1
यह अब तक का सबसे आसान उपाय है। keytoolकमांड का उपयोग करके मुझे गलत कुंजी हैश मिल रही थी (मुझे पता नहीं क्यों, तय किया कि मैंने जांच करने के लिए पर्याप्त देखभाल नहीं की है)। यह काम किया और सचमुच डिबग पाने और कुंजी हैश जारी करने में 5 मिनट का समय लगा। +1
क्रिस क्रेफ़िस

1
हाँ सेबस्टियन, आपको बस एक डिवाइस पर हस्ताक्षर किए गए एपीके को इंस्टॉल करना होगा जो इसे एंड्रॉइड स्टूडियो से कनेक्ट करेगा और लॉग कैट की जांच करेगा, या यू हैश को एडिट में एक शोस्टेक्ट में दिखा सकता है और इसे कॉपी कर सकता है, वैसे भी हैश इस कोड से काम करता है पर हस्ताक्षर किए APK :)
बासम विसा

1
Keytool का उपयोग करना एक ऐसी गड़बड़ी है जो वास्तव में सरल है
Tabish

135

मैंने विंडोज और मैक ओएस एक्स के लिए एक छोटा सा टूल बनाया है। बस की-स्टोर फ़ाइल में फेंक दें, और हैश कुंजी प्राप्त करें।

यदि आप डिफॉल्ट डिबग.स्टोर फाइल चाहते हैं, तो डिफ़ॉल्ट उपनाम और पासवर्ड का उपयोग करें। और, अपनी स्वयं की कीस्टोर फ़ाइल और मान का उपयोग करें।

इसे देखें, विंडोज संस्करण डाउनलोड करें या मैक ओएस एक्स संस्करण डाउनलोड करें (देव-होस्ट कभी-कभी नीचे हो सकता है ... इसलिए यदि लिंक टूट गया है, तो पीएम मुझे और मैं इसे ठीक कर दूंगा)।

मुझे उम्मीद है कि आप लोगों को मदद मिलेगी ...

31 दिसंबर, 2014 - EDIT: AFH को होस्ट बदला गया। कृपया मुझे बताएं कि क्या लिंक टूटे हैं

21 नवंबर, 2013 - EDIT:

जैसा कि उपयोगकर्ताओं ने अनुरोध किया, मैंने एक डिफ़ॉल्ट कीस्टोर स्थान और एक डोनट बटन जोड़ा अगर मैंने आपकी मदद की है तो इसे बेझिझक इस्तेमाल करें । :)

Screen shot Screen shot 2


1
श्रेष्ठ। तरीका। कभी। दान बटन कहां है?
एडम वराहिगी

1
@ Shahar2k5 वास्तव में नहीं जानते, फिर से शुरू किया और एक आकर्षण की तरह काम किया। क्षमा करें
Anearion

1
एक जादू की तरह काम करता है! साझा करने के लिए धन्यवाद :)
विनायक

1
@ शेहर बरसेशेट धन्यवाद तुम सही हो। Devhost डोमेन से डाउनलोड किया गया और कोई समस्या का सामना नहीं करना पड़ा।
मेजरगीक

1
मुझे कुछ समझ नहीं आ रहा है: keytoolकमांड लाइन का उपयोग करने की तुलना में आपका टूल अलग SHA कुंजी क्यों दे रहा है ? क्या यह समान परिणामों का उत्पादन करने वाला नहीं है, यदि एक ही कीस्टोर फ़ाइल पर लागू किया जाता है?
नाइटफंड

64

फेसबुक के एंड्रॉइड ट्यूटोरियल में वर्तमान में दिए गए निर्देश विंडोज के तहत अच्छी तरह से काम नहीं करते हैं । उनके उदाहरण से पता चलता है कि खुलने के समय keytool आउटपुट को कैसे पाइप किया जाता है लेकिन अगर आप विंडोज के तहत यह कोशिश करते हैं तो आउटपुट किसी कारण से मान्य नहीं है। मैंने पाया कि इसे ठीक से काम करने के लिए मुझे मध्यस्थ फ़ाइलों का उपयोग करना पड़ा। यहाँ कदम है कि मेरे लिए काम कर रहे हैं:

Google से विंडोज के लिए Opensl डाउनलोड करके प्रारंभ करें ।

C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin

C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt

इन कमांड्स को चलाने के बाद वैध हैश फाइल बेस 64.txt में स्टोर हो जाती है। फेसबुक पर अपनी ऐप सेटिंग में इसे कॉपी और पेस्ट करें।


सही काम करता है, बाकी सब विफल हो रहा था।
ओलिवर डिक्सन

2
क्या एक PITA - लेकिन ब्रायन सही है! कमांड एक हैश लगभग कोई फर्क नहीं पड़ता कि क्या होगा, क्या आपका रास्ता गलत है, पासवर्ड गलत है, या पाइप सही काम नहीं कर रहे हैं - आप एक बड़ा हो जाएगा, लेकिन यह काम नहीं करेगा। इसलिए (विंडोज पर) मैंने पॉवर्सशेल को डिसाइड किया और साइगविन की कोशिश की - फिर भी काम नहीं कर रहा। डिबग.स्टायस्टोर फाइल को वर्किंग डायर पर कॉपी करने के बाद ही मैं इसे चला सकता हूं और काम कर सकता हूं !!
बॉबी

2
इसलिए, संक्षेप में, विंडोज पर, या तो ब्रायन की तकनीक को इसे अलग करने के लिए उपयोग करें, या कार्यशील डीआईआर में अपनी कीस्टोर फाइल के साथ साइबरविन का उपयोग करें: keytool -exportcert -alias androiddebugkey -keystoreugug.keystore | opensl sha1 -binary | Opensl base64 यदि यह आपको पासवर्ड के लिए संकेत नहीं देता है, तो इसे कीस्टोर फ़ाइल ठीक से नहीं मिली।
बॉबी

मेरे लिए पूरी तरह से काम किया। बहुत बढ़िया जवाब।
रॉन

यदि आप गलत पासवर्ड मामलों के लिए हैश होने से बचना चाहते हैं, तो ओपनएसएसएल के साथ जारी रखने से पहले अपने mycert.bin की जांच करें। अन्यथा आप गलत पासवर्ड एरर टेक्स्ट
हैशटैग करेंगे

50

यह फेसबुक के आधिकारिक पेज पर दिया गया है :

   keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

मुझे इस आदेश को टुकड़ों में तोड़ने दें।

  1. के लिए देखो "keytool.exe"। आप इसे C: ड्राइव पर खोज सकते हैं। आप इसे में प्राप्त कर सकते हैं "java jdk"या "java jre"। यदि आपने कई संस्करण स्थापित किए हैं, तो कोई भी चुनें।

  2. एक सीएमडी प्रॉम्प्ट खोलें और उपरोक्त निर्देशिका पर जाएं जहां आपने पाया था "keytool.exe"

    "Exe`" को क्लिप करें और ऊपर दिए गए कमांड को फेसबुक पेज पर पेस्ट करें।

  3. आपको इसे दर्ज करने में एक त्रुटि मिलेगी कि OpenSSL इनपुट आउटपुट कमांड के रूप में मान्यता प्राप्त नहीं है। समाधान: ओपनएसएसएल से "ओपन्सल" डाउनलोड करें (यदि आपके पास 64-बिट मशीन है तो आपको ओपनसेल-0.9.8e एक्स 64 डाउनलोड करना होगा )। निकालें और इसे कहीं भी सहेजें ... मैंने इसे C: ड्राइव में OpenSSlफ़ोल्डर में सहेजा है

  4. Opensl को उपरोक्त कमांड में बदलें जिसमें आपको OpenSSL की त्रुटि "C: \ OpenSSL \ bin \ opensl" के साथ पाइप के बाद दोनों स्थानों पर मिल रही थी।

  5. यदि पासवर्ड के लिए कहा जाए, तो दर्ज करें android

और आपको अपना हैश की मिलेगा। आगे के चरणों के लिए, फेसबुक पेज पर फिर से देखें।


32

इस कोड को onCreateअपनी गतिविधि में जोड़ें , यह आपके लॉगकैट में KeyHash टैग के तहत हैश प्रिंट करेगा

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           getPackageName(),
                           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) {

}

आप अपने खाते के लिए कई हैशेक जोड़ सकते हैं, इसलिए यदि आप डिबग में चल रहे हैं तो इसे रिलीज़ मोड में फिर से चलाना न भूलें


महान समाधान, मुझे लगता है कि कोई निष्पादन योग्य अहस्ताक्षरित संस्करण नहीं होना चाहिए? अहस्ताक्षरित संस्करण किसी भी उपकरण पर स्थापित करने में असमर्थ होना चाहिए। उन डिबग संस्करण पर डिबग कीस्टोर के साथ हस्ताक्षर किए गए हैं :)
बेलेंग

26

Android कुंजी हैश कोड प्राप्त करने के लिए, इन चरणों का पालन करें:

  1. विंडोज के लिए ओपनएसएसएल डाउनलोड करें यहां करें
  2. अब C ड्राइव पर अनज़िप करें
  3. एक CMD शीघ्र खोलें
  4. प्रकार cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. फिर केवल keytool -export -alias myAlias -keystore C:\Users\अपना उपयोगकर्ता नाम लिखें\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. किया हुआ

2
बहुत बढ़िया जवाब। आपका बहुत बहुत धन्यवाद।
पलानी कुमार

1
यह डीबग कुंजी के लिए है या रिलीज़ कुंजी के लिए है?
इगोरगानपोलस्की

@IgorGanapolsky पथ के बजाय myKeyStore, अपनी रिलीज़ कुंजी का पथ दें। उपरोक्त कोड डिबग की के लिए है
पल्लवी

17

सबसे सरल उपाय जो मैंने पाया है वह यह है:

  • लॉग कैट खोलें
  • कोशिश करें और एंड्रॉइड एसडीके के साथ फेसबुक का उपयोग करें
  • इस तरह दिखने वाले लॉग में लाइन देखें:

    04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. 
    Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
    application settings. Check your application settings at 
    http://www.facebook.com/developers
  • "AbcdefgHIJKLMN + OPqrstuvwzyz" को कॉपी करें और इसे फेसबुक एंड्रॉइड की हैश क्षेत्र में पेस्ट करें।


यह सबसे सरल और सबसे प्रभावी तरीका है, बस इसे बिना लॉग्स के भी ओपनस्ले से लें!
लुका सी।

यह मेरे लिए एकमात्र काम किया समाधान है!। मुझे आपकी तरह लॉग दिखाई नहीं दे रहा है, लेकिन मैं इस KeyHash: XWwXXXXX/5xxxxxxxxxxx=लॉग में देख रहा हूँ और मेरी मदद की!
खांग दीन्ह होआंग

14

आप SHA-1 कुंजी से हैश प्राप्त कर सकते हैं। इसकी बहुत ही सरल आपको इमेज के नीचे प्ले स्टोर चेक से अपना SHA-1 (Signed APK) कुंजी प्राप्त करने की आवश्यकता है।यहां छवि विवरण दर्ज करें

अब उस SHA-1 कुंजी को कॉपी करें और इसे इस वेबसाइट में पेस्ट करें http://tomeko.net अपनी कुंजी हैश प्राप्त करने के लिए छवि के नीचे भी देखें।

यहां छवि विवरण दर्ज करें


1
धन्यवाद। मैंने ओपनएसएसएल का उपयोग करके प्रमुख हैश प्राप्त करने की कोशिश की। यह मुझे 1 मिनट के लिए ले गया और यह आसान था।
ग्रीन वाई।

1
आपका बहुत बहुत धन्यवाद! यह समाधान था क्योंकि Google अब मेरे ऐप पर हस्ताक्षर कर रहा है (मैं सिर्फ अपलोड सर्टिफिकेट / कीस्टोर का उपयोग करता हूं)
हैरिसन

13

मैंने इस तरह से किया है लिनक्स ओएस और के विंडोज ओएस के :

लिनक्स:

  • डाउनलोड Openssl
  • टर्मिनल खोलें
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

कृपया पथ के साथ उपनाम नाम और कीस्टोर को बदलें अपनी आवश्यकता के अनुसार ।

टर्मिनल होगा पूछने के लिए पासवर्ड कुंजीस्टोर की। आपको उसी कीस्टॉर के लिए पासवर्ड प्रदान करना होगा

तो आखिरकार आपको रिलीज हाशिम मिलेगी

खिड़कियाँ:

रिलीज के लिए कदम Hashkey :

  • Openssl ( यहां से डाउनलोड करें ) डाउनलोड करें , मैंने 64 बिट के लिए डाउनलोड किया है ओएस के , आप अधिक पा सकते हैं यहां
  • डाउनलोड की गई ज़िप फ़ाइल को C: \ drive में ही निकालें
  • ओपन कमांड प्रॉम्प्ट
  • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

कृपया पथ के साथ उपनाम नाम और कीस्टोर को बदलें अपनी आवश्यकता के अनुसार ।

ध्यान दें:

कृपया अपना विवरण रखें जहां मैंने ** ** के बीच चिह्नित किया है।

टर्मिनल होगा पूछने के लिए पासवर्ड कुंजीस्टोर की। आपको उसी कीस्टॉर के लिए पासवर्ड प्रदान करना होगा

तो आखिरकार आपको रिलीज हाशिम मिलेगी

किया हुआ


यहाँ पासवर्ड क्या है?
आकाश बिसारिया 10

@ अकाशबीरिया, किस्टोर का पासवर्ड, जो आपने कीस्टोर बनाते समय दिया है।
हिरेन पटेल

मुझे सफलतापूर्वक उत्पन्न होने के बाद कुंजी कहां मिल सकती है?
आनंद फड़के

11
  • विंडोज़ के लिए ओपनएसएसएल डाउनलोड करें यहां आप 64 बिट और 32 बिट पा सकते हैं

  • डाउनलोड की गई फ़ाइल निकालें

  • C ड्राइव में फ़ोल्डर का नाम ओपनएसएसएल बनाएं
  • सभी निकाले गए आइटम्स को ओपनएसएसएल फोल्डर में कॉपी करें (बिन, शामिल, काम, खुलता है। एसएलएनएफ)
  • Android डिबग कीस्टोर प्राप्त करें, डिफ़ॉल्ट स्थान होगा

C: \ Users \ उपयोगकर्ता नाम \ .android \ debug.keystore

  • अब अपना कमांड प्रॉम्प्ट प्राप्त करें और इस कोड को पेस्ट करें

keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ opensl" sha1 -binary | "C: \ openSSL \ bin \ opensl" base64

  • हिट दर्ज करें और आपको 28 अंकों का कीकोड मिलेगा

नहीं, यह पासवर्ड के लिए पूछता है। टाइपिंग android24 अंकों का हैश और टाइपिंग a28 अंकों का हैश देता है। पता नहीं क्यों!
सूद 7००

बुरा लिंक! उनके पास
चाभी

6

आपको एंड्रॉइड साइट में वर्णित प्रक्रिया की तरह एंड्रॉइड के लिए हस्ताक्षर किए गए एप्लिकेशन के लिए कुंजीटूल द्वारा एक कीस्टोर बनाने की आवश्यकता है और फिर आपको साइबरविन को इंस्टॉल करना होगा और फिर आपको Google कोड से ओपनस्ल इंस्टॉल करना होगा फिर बस निम्नलिखित कमांड निष्पादित करें और आपको हैश मिलेगा एंड्रॉइड के लिए कुंजी और फिर उस हैश कुंजी को आपके द्वारा बनाए गए फेसबुक एप्लिकेशन में डालें। और फिर आप पोस्ट करने की दीवार के लिए एंड्रॉइड एप्लिकेशन के माध्यम से फेसबुक एप्लिकेशन का उपयोग कर सकते हैं ("publish_stream") एक उदाहरण हो सकता है।

$ keytool -exportcert -alias alias_name -Stystore opensl sha1 -binary | खुलता है base64

आपको साइबरगन से उपरोक्त कमांड निष्पादित करने की आवश्यकता है।


6

डाउनलोड openssl -> यह स्थापित करें -> यह आम तौर पर में स्थापित होगा C: \ OpenSSL

फिर cmd खोलें और टाइप करें

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

चेक करने के लिए jdk वर्जन C: / प्रोग्राम फाइल्स / जावा / jdk_version पर जाएं

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

यह आपसे पासवर्ड मांगेगा जो कि एंड्रॉइड है।


6
  1. बस आपको मुख्य गतिविधि फ़ाइल खोलें और नीचे उल्लेख समारोह बनाएँ:

         try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.application.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) {
    
    } catch (NoSuchAlgorithmException e) {
     }

1.1 आप एप्लिकेशन चलाएं, यह आपके आवेदन के लिए एक हैश कुंजी उत्पन्न करेगा।

  1. अब, लॉग बिल्ली खोलें और "कीहैश" के साथ खोजें और हैश कुंजी को कॉपी करें।

  2. एक आप हैश कुंजी उत्पन्न करते हैं जो आप इस फ़ंक्शन को निकाल सकते हैं।


5

1) अपने आवेदन पर हस्ताक्षर करने के लिए एक कुंजी बनाएं, और उपनाम याद रखें।

2) ओपनएसएसएल स्थापित करें।

3) अपने रास्ते में OpenSSL का बिन फ़ोल्डर रखो।

4) एफबी-एंड्रॉइड-एसडीके पृष्ठ पर "सेटअप सिंगल साइन-ऑन" के तहत उल्लिखित चरणों का पालन करें , और अपनी हैश की उत्पन्न करें। सुनिश्चित करें कि आपने सही उपनाम और कीस्टोर फ़ाइल नाम रखा है।

5) फेसबॉक पर एक एप्लिकेशन बनाएं, और मोबाइल डिवाइसेस टैब के तहत, यह हैश की दर्ज करें।


5

फेसबुक डेवलपर साइट पर आधिकारिक प्रलेखन :

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

    // Add code to print out the key hash
    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) {

    }

@WilliamKinaan: कभी भी;): P
हार्दिक थैकर

@HardikThaker मैंने आपके कोड का उपयोग किया यह मुझे बिल्कुल उसी प्रकार कीश देता है जो मुझे इस कमांड द्वारा टर्मिनल का उपयोग करने के लिए मिला है keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64और मुझे अभी भी कुंजी हैश किसी भी संग्रहीत कुंजी हैश से मेल नहीं खाती है
Shan Xeeshi

4
keytool -exportcert -alias androiddebugkey -keystore       C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64

यह मेरे लिए काम किया ...

कदम:

1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64 

    ....................   give proper debug.keystore path and openSSL path .. 

4) Finley it may be ask u password .. so give password -> android   ...
5) you will get 28 characters that will be your has key

4

लिनक्स के लिए

टर्मिनल खोलें:

डीबग बिल्ड के लिए

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

तुम मिल debug.keystore ".android" फ़ोल्डर से कॉपी और डेस्कटॉप पर पेस्ट से और आदेश ऊपर चलाने

रिलीज के लिए बिल्ड

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

नोट: सुनिश्चित करें कि दोनों स्थिति में इसे पासवर्ड के लिए पूछना चाहिए। यदि यह पासवर्ड नहीं मांगता है, जिसका अर्थ है कि कमांड में कुछ गलत है।


मुझे अलग-अलग उपनामों के साथ अलग-अलग मूल्य मिल रहे हैं, कैसे सत्यापित करें कि कौन सा सही है?
जवाल नंद

यह दोनों उपनाम नाम के साथ पासवर्ड के लिए पूछ रहा है?
बिराज जालवदिया

हां और जो भी पासवर्ड दर्ज करता हूं, उसे मुझे हैश कुंजी दी जाती है .. मेरा ऐप पहले से ही प्ले स्टोर पर है और देशी fb अब काम नहीं कर रहा है। मुझे किसी भी तरह से रिलीज़ बिल्ड के लिए सटीक कुंजी हैश उत्पन्न करना होगा। डेवलपर्स निम्नलिखित पोस्ट में ऑनक्रिएट के अंदर कोड को शामिल करने का सुझाव दे रहे हैं, लेकिन मैं इसे playstore stackoverflow.com/questions/15021790/…
जावाल नंद

हां, ओपनसेल के साथ विधवाओं के साथ एक समस्या है। आप उस पोस्ट में निर्दिष्ट कोड के साथ प्राप्त कर सकते हैं।
बिराज जालवदिया

यदि आप playstore पर अपडेट के बिना करना चाहते हैं। 1) न्यू एंड्रॉइड डेम्प ऐप बनाएं। 2) कोड के उस टुकड़े को बनाएं। 3) इस डेमो ऐप को ऐप स्टोर पर ऐप के समान कीस्टोर के साथ साइन करें 4) फिर इस साइन इन करें एपीके 5 को चलाएं) और अंत में इस हैश कुंजी का उपयोग करें
बिराज ज़ालवडिया

4

एक Android आवेदन के लिए

इस कोड का उपयोग फेसबुक एकीकरण के लिए आपके एंड्रॉइड एप्लिकेशन में हैश कुंजी प्राप्त करने के लिए किया जाता है। मैंने सभी उपकरणों का परीक्षण किया है और यह काम कर रहा है। केवल इस कोड का पैकेज नाम बदलें:

private void facebookHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashCode  = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            System.out.println("Print the hashKey for Facebook :"+hashCode);
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

4

जैसा कि इसी तरह के एक मुद्दे पर जवाब दिया गया था मुझे यह मेरे लिए काम कर रहा था:

  • उस apkname.apkफ़ाइल को कॉपी करें जिसे आप ' Java \ jdk1.7.0_79 \ bin ' फ़ोल्डर के हैश को जानना चाहते हैं
  • यह आदेश चलाएँ keytool -list -printcert -jarfile apkname.apk
  • SHA1मान की प्रतिलिपि बनाएँ और इसे इस साइट का उपयोग करके रूपांतरित करें
  • परिवर्तित कीनश मान का उपयोग करें ( उदा। ZHHoo1xcaPv6CmvlWnJk3SaNRIQ = )

3

सबसे सरल उपाय:

  1. हैश कुंजी न जोड़ें, बाकी सब को लागू करें
  2. जब फेसबुक लॉगिन दबाया जाता है, तो आपको "अमान्य कुंजी हैश" कहते हुए एक त्रुटि मिलेगी। कुंजी हैश "xxx" किसी भी संग्रहीत कुंजी से मेल नहीं खाती है। ... "
  3. फेसबुक ऐप डैशबोर्ड खोलें और हैश "xxx =" ("xxx" हैश को त्रुटि + "=" साइन) से जोड़ें

3

अपनी रिलीज़ कुंजी का हैश जेनरेट करने के लिए, मैक या विंडोज पर निम्न कमांड चलाएं, जो आपकी रिलीज़ कुंजी को और आपके कीस्टोर को पथ प्रदान करता है।

विंडोज पर, उपयोग करें:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

इस कमांड को 28 चरचर स्ट्रिंग उत्पन्न करना चाहिए। याद रखें कि COPY और PASTE इस रिलीज़ कुंजी को अपने फेसबुक ऐप आईडी की एंड्रॉइड सेटिंग्स में बदल दें।

छवि: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108408_n.png

से देखें: https://developers.facebook.com/docs/android/getting-started#release-key-hash और http://note.taable.com


3

कोटलिन में प्रिंट की हैश के लिए इसका उपयोग करें

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }

2

एंड्रॉइड स्टूडियो में भी हल किया गया, लेकिन थोड़े अलग तरीके से।

Android स्टूडियो में SHA-1 मान प्राप्त करने के लिए।

  1. ग्रेड पर क्लिक करें
  2. साइनिंग रिपोर्ट पर क्लिक करें
  3. SHA-1 की प्रतिलिपि बनाएँ

Android स्टूडियो में चिह्नित पैनल पर क्लिक करें

  1. SHA-1 मान इस सीडी की तरह दिखते हैं: A1: EA: A3: 5C: 5C: 68: FB: FA: 0A: 6B: E5: 5A: 72: 64: DD: 26: 8D: 44: 84

    और अपने SHA1 मान को base64 में बदलने के लिए http://tomeko.net/online_tools/hex_to_base64.php खोलें । फेसबुक को जेनरेट किए गए हैश "**********************" प्राप्त करने की आवश्यकता है और कुंजी हैश को फेसबुक ऐप कंसोल में कॉपी करें।

इस उत्तर का एक हिस्सा यहाँ से लिया गया Github Link


2

दो तरीके उपलब्ध हैं जटिल एक और आसान एक

तरीके एक: (थोड़ा जटिल)

सभी को डाउनलोड करने के लिए है के पहले ssl 64bit या 32bitतदनुसार, युक्त नाम के साथ फ़ाइल डाउनलोड करने के लिए याद eकरने के बाद संस्करण कोड openssl-0.9.8e_X64.zip या openssl-0.9.8e_WIN32.zip साथ नहीं kसंस्करण कोड के बाद,

और AndroidStudio / jre / bin निर्देशिका में जगह है, अगर आप नहीं जानते कि कहाँ जगह है, तो आप इस निर्देशिका को Android स्टूडियो शॉर्टकट पर राइट क्लिक करके पा सकते हैं:

यहां छवि विवरण दर्ज करें

अब आप दो आवश्यक चीजों को एक जगह पर प्रबंधित कर चुके हैं, लेकिन फिर भी आपको अपने लिए रास्ता ढूंढना है debug.keystore, जो कि हमेशा में पाया जा सकता है "C:\Users\yourusernamehere\.android\debug.keystore",

नोट यदि आपका ऐप पहले से प्रकाशित है, या प्रकाशित करने के बारे में है, तो अपने प्रकाशन हस्ताक्षरित कीस्टर का उपयोग करें, यदि और केवल यदि आप विकास मोड में परीक्षण कर रहे हैं, तो आप डिबग, कीज़ोट्रे का उपयोग कर सकते हैं

जैसा कि सब कुछ सेटअप है, उस कमांड को व्यवस्थित करें जिसे आप हैश की जनरेशन के लिए निष्पादित करना चाहते थे base64 formatऔर आप कमांड इस तरह देखेंगे

keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64

यह आपको डिबग.स्टिस्टोर के लिए एक पासवर्ड दर्ज करने के लिए प्रेरित करेगा, जो डिफ़ॉल्ट रूप से एंड्रॉइड है। यदि आप पासवर्ड से अपनी कुंजी का उपयोग कर रहे हैं तो वह भी आपकी ही होगी। आउटपुट इस तरह दिखेगा यदि सब कुछ अच्छी तरह से उम्मीद के मुताबिक हो, तो उम्मीद है कि यह मदद कर सकता है

यहां छवि विवरण दर्ज करें

दूसरी विधि (क्रमशः आसान एक)

यदि आप उपरोक्त सभी प्रक्रिया से गुजरना नहीं चाहते हैं, तो बस हैकी लॉग करने के लिए निम्न विधि का उपयोग करें:

 private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA1");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("KeyHash:", e.toString());
        }
    }

उत्पादन:

यहां छवि विवरण दर्ज करें


1

निम्नलिखित कोड का उपयोग करने के लिए सबसे अच्छा तरीका है:

private void getHashKey(String pkgName)
{
    try
    {
        PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = Base64.encodeBytes(md.digest());
            _hashKey_et.setText(hashKey);
            Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
        }
    }
    catch (NameNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
}

लेकिन मैं इस तथ्य से इतना निराश था कि फेसबुक ऐप के लिए HashKey उत्पन्न करने के लिए कोई सरल उपकरण नहीं है। हर बार मुझे Openssl और Keytool के साथ खेलना पड़ता था या हस्ताक्षर से हैश पाने के लिए एक कोड का उपयोग करना पड़ता था ...

तो मैंने एक सरल KeyGenTool लिखा है जो आपके लिए वह काम करेगा: -> Google Play पर KeyGenTool <-

का आनंद लें :)


1

मैंने एक छोटी सी गलती की जिसे ध्यान में रखा जाना चाहिए। यदि आप अपने कीस्टोर का उपयोग कर रहे हैं तो अपना उपनाम नाम दें, न कि androiddebugkey ...

मैंने अपनी समस्या हल कर ली। अब अगर फेसबुक मेरे डिवाइस में स्थापित है, तो अभी भी मेरे ऐप को फेसबुक लॉगिन एकीकरण पर डेटा मिल रहा है। बस अपनी हैश की की परवाह करो।

कृपया नीचे देखे।

C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name  -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64

फिर दबायें Enter - यह आपसे पासवर्ड के लिए पूछेगा और फिर एंड्रॉइड नहीं बल्कि अपने कीस्टॉर पासवर्ड दर्ज करें।

ठंडा।


0
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    Button btn;
    EditText et;
    PackageInfo info;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button1);
        et=(EditText)findViewById(R.id.editText1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {
                    info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES);
                    for (Signature signature : info.signatures) {
                        MessageDigest md;
                        md = MessageDigest.getInstance("SHA");
                        md.update(signature.toByteArray());
                        String something = new String(Base64.encode(md.digest(), 0));
                        //String something = new String(Base64.encodeBytes(md.digest()));
                        et.setText("" + something);
                        Log.e("hash key", something);
                    }
                } catch (NameNotFoundException e1) {
                    Log.e("name not found", e1.toString());
                } catch (NoSuchAlgorithmException e) {
                    Log.e("no such an algorithm", e.toString());
                } catch (Exception e) {
                    Log.e("exception", e.toString());
                }
            }
        });
    }



}

यह कोड मेरे लिए एक वैध हैश कुंजी उत्पन्न नहीं करता है। @ जमशेद का जवाब मैक ओएसएक्स पर मेरे लिए काम करता है।
लूलूई

0

हैश कुंजी प्राप्त करने के लिए कोटलिन कोड

 private fun logHashKey() {
    try {
        val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
        for (signature in info.signingInfo.signingCertificateHistory) {

            val md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            val something = Base64.getEncoder().encodeToString(md.digest());
            Log.e("hash key", something);
        }
    } catch (e1: PackageManager.NameNotFoundException) {
        Log.e("name not found", e1.toString());
    } catch (e: NoSuchAlgorithmException) {
        Log.e("no such an algorithm", e.toString());
    } catch (e: Exception) {
        Log.e("exception", e.toString());
    }
}

कृपया डीबग और रिलीज़ परिवेश में कुंजियाँ बनाना न भूलें क्योंकि वे बिल्ड सेटिंग के अनुसार बदलते हैं।


0

इसे इस्तेमाल करे :

  • हैश की वैल्यू पाने के दो तरीके

1) कमांड लाइन (आधिकारिक डॉक्टर: https://developers.facebook.com/docs/android/getting-started ) का उपयोग करने से हैश कुंजी प्राप्त करें

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

या

2) कोड का उपयोग करके हैश कुंजी प्राप्त करें

  @Override
   protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

            //Hask Kay generation 
             GetKeyHase();
    }

    private void GetKeyHase() {
            try {
                PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = (MessageDigest.getInstance("SHA"));
                    md.update(signature.toByteArray());
                    String hashkey_value = new String(Base64.encode(md.digest(), 0));
                    Log.e("hash key", hashkey_value);
                    //check you logcat hash key value
                }
            }catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.