Android Facebook Key Hash कैसे बनाएं?


182

मुझे यह प्रक्रिया बिल्कुल समझ में नहीं आती है। मैं जावा एसडीके में कुंजीटोल वाले फ़ोल्डर में नेविगेट करने में सक्षम हूं। हालाँकि मुझे यह त्रुटि मिलती रहती है कि आंतरिक या बाहरी कमांड के रूप में मान्यता प्राप्त नहीं है। समस्या यह है कि अगर मुझे यह काम करने के लिए मिल सकता है, तो मैं क्या करूंगा और बाद में क्या करूंगा?


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

अपने स्थानीय कंप्यूटर पर अपनी मुख्य हैश बनाने के लिए, एंड्रॉइड डीबग कीस्टोर के खिलाफ जावा की कीटूल उपयोगिता (जो आपके कंसोल के पथ पर होनी चाहिए) को चलाएं। यह डिफ़ॉल्ट रूप से, आपके घर में .android निर्देशिका) है। OS X पर, रन: कीटूल -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | opensl sha1 -binary | Opensl base64 विंडोज पर, उपयोग करें: - keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% \। android \ debug.keystore | opensl sha1 -binary | ओपन्सएल बेस 64
राकेश

कोई भी डिबग कुंजी क्यों बनाना चाहेगा?
एंडर्स लिंडन

मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

जवाबों:


242

यहाँ है आपको क्या करने की जरूरत है -

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

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

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

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

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


जब यह पासवर्ड मांगता है तो क्या मुझे कुछ भी चाहिए जो मैं चाहता हूं?
सोमक

5
@Max, डिफ़ॉल्ट पासवर्ड है android
जामपाग

2
प्रमुख हैश किसी भी संग्रहीत कुंजी हैश एंड्रॉइड से मेल नहीं खाता है, काम नहीं कर रहा है
बोल्डिजर पॉल सेप

1
सबसे पहले अपने स्टूडियो से बिल्ड -> बिल्ड एप पर जाकर एक किस्टोर बनाएं। एक नाम और पासवर्ड आदि प्रदान करें। इसे आसानी से सुलभ एक फ़ोल्डर में एक .jks फ़ाइल के रूप में संग्रहीत करें। अब पथ को कॉपी करें और उपर्युक्त उत्तर में उस पथ को बदलकर कुंजी उत्पन्न करें।
बग्गडॉइड

1
यह मुझे एक त्रुटि दिखाता है: "... अभिव्यक्तियों को केवल पाइप लाइन के पहले तत्व के रूप में अनुमति दी जाती है। लाइन पर: 1 char: 184 ... अभिव्यक्ति या कथन में अप्रत्याशित टोकन 'sha1' ... अभिव्यक्तियाँ केवल के रूप में अनुमत हैं। एक पाइप लाइन के पहले तत्व ... अप्रत्याशित टोकन अभिव्यक्ति या बयान में 'बेस 64' + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId:।। ExpressionsMustBeFirstInPipeline "
Android डेवलपर

175

लिनक्स और मैक के लिए

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

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

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

नोट: सुनिश्चित करें कि दोनों मामलों में यह एक पासवर्ड के लिए पूछता है। यदि यह पासवर्ड नहीं मांगता है, तो इसका मतलब है कि कमांड में कुछ गलत है। के लिए पासवर्ड debug.keystore है " एंड्रॉयड " और जारी करने के लिए आप आपको लगता है कि पासवर्ड दर्ज करने के लिए है कुंजीस्टोर बनाने के दौरान सेट


3
स्पष्ट होने के लिए, पासवर्ड खाली है। संकेत मिलने पर बस <Enter> को हिट करें।
टॉम रेडमैन

मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

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

शुक्रिया मेरी जान बचाने के लिए। im पूरे समय के लिए मेरे मैक पासवर्ड कास्टयोर पासवर्ड को टायप कर रहा है और मुझे एहसास हुआ कि यह गलत था
लकी एंजेलो

1
यहां तक ​​कि पासवर्ड मांगने का मतलब यह नहीं है कि सब कुछ ठीक है (गलत पासवर्ड, गलत कुंजी उपनाम)। भागो keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>पहली बार में अकेले, अगर सब कुछ ठीक है देखने के लिए। इसके अलावा, जब पाइप किया जाता है, तो कीटल गैर-इंटरैक्टिव मोड में होता है और जब आप इसे इनपुट करते हैं तो पासवर्ड को सादे टेक्स्ट में दिखाते हैं। इसलिए आप बेहतर ढंग से एक छोटी स्क्रिप्ट लिखते हैं जो अलग से कमांड चलाता है।
पियरे

98

कृपया इसे आज़माएँ:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }

मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

यह जाने का रास्ता है
टिनटिनब्यूलेटर Zea

1
यह काम करता है, अगर आप pContext.getPackageInfo को कॉल करते हैं। या बस इसे किसी फ़ंक्शन से हटा दें और इसे किसी भी गतिविधि के ऑनक्रिएट में कॉल करें।
दिप्रिंध

1
। यह अब getPackageManager () getPackageInfo ([अपने-PACKAGE_NAME], PackageManager.GET_SIGNATURES) हो रहा है
जब तक

@ अपूर्वा आप इसे बाद में उपयोग करने के मामले में Android SharedPreferences में रख सकते हैं।
मैडी

49

ओपनएसएसएल: आपको यह स्थापित करना होगा कि अगर यह आपके ऑपरेटिंग सिस्टम के साथ प्रीइंस्टॉल्ड नहीं आता है (जैसे विंडोज में यह प्रीइंस्टॉल्ड नहीं है) । कैसे स्थापित करें जो आपके ओएस पर निर्भर करता है (विंडोज के लिए coder_For_Life22 द्वारा दिए गए लिंक की जांच करें )।

यदि आप विंडोज पर हैं, तो आपके पास फ़िगलिंग के बिना सबसे आसान तरीका है, जो आपके keytool पथ में द्विआधारीsl.exe को खोलता है। यदि आप ऐसा नहीं करना चाहते हैं, तो आपको इसे अपने PATHपर्यावरण चर में जोड़ना होगा । फिर डॉक्स में दी गई कमांड को निष्पादित करें।

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

ध्यान दें कि -keystoreअपने डिबग कीस्टोर के लिए बिंदु के बाद तर्क । यह स्थान आपके ऑपरेटिंग सिस्टम पर भी निर्भर करता है। निम्नलिखित स्थानों में से एक में होना चाहिए:

  • Windows Vista या 7 - C: \ Users \ .android \ debug.keystore
  • Windows XP - C: \ Documents and Settings \ .android \ debug.keystore
  • OS X और Linux - ~ / .android / debug.keystore

यदि आपने सब कुछ ठीक किया है, तो आपको पासवर्ड के लिए संकेत दिया जाना चाहिए। यह androidडीबग प्रमाणपत्र के लिए है। यदि पासवर्ड सही है तो कंसोल एक हैश (कुछ यादृच्छिक वर्ण और संख्या) प्रिंट करता है।

इसे लें और इसे android key hashअपने ऐप की प्राथमिकताओं के अंदर फ़ेसबुक पर कॉपी करें। वहाँ जाने के लिए , Developers.facebook.com/apps पर जाएं , अपना ऐप चुनें, पर जाएं Edit settingsऔर नीचे स्क्रॉल करें। उसके बाद, कुछ मिनट प्रतीक्षा करें जब तक कि परिवर्तन प्रभावी न हो जाए।


मैंने इसे cmd में चलाया और यह एक बहुत लंबी सूची का निर्माण करता है, जो एक हैश की तरह लग रहा है = चिन्ह के साथ तो $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ .android \ debug.keystore"। "C: \ OpenSSL \ bin \ opensl" sha1 -binary | "C: \ OpenSSL \ bin \
opensl

सही लगता है। बस मेरी मशीन पर इसका परीक्षण किया गया था, मेरे लिए 28 चार्ट लंबा था, बस आपको एक विचार देने के लिए। अब बस इसे कॉपी करें और आप ठीक हैं। :)

मैं यद्यपि Android का उपयोग करने के लिए प्रेरित नहीं किया गया था। क्षमा करें क्या मैं धीमा हूँ?
सोमक

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

24

अपने स्थानीय कंप्यूटर पर अपनी प्रमुख हैश बनाने के लिए, एंड्रॉइड डीबग कीस्टोर के खिलाफ जावा की कीटूल उपयोगिता (जो आपके कंसोल के पथ पर होनी चाहिए) को चलाएं। यह डिफ़ॉल्ट रूप से, आपके घर में .android निर्देशिका) है। OS X पर, चलाएँ:

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

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

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

आशा है कि यह आपकी मदद करेगा

Ref - डेवलपर फेसबुक साइट


मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

19

आप बस एक कंसोल मैप को बेस 64 में कनवर्ट करने के लिए ब्राउज़र कंसोल में एक लाइन जावास्क्रिप्ट का उपयोग कर सकते हैं। नवीनतम ब्राउज़र (खिड़कियों पर F12) में ओपन सांत्वना और कोड पेस्ट और की जगह SHA-1, SHA-256हेक्स नक्शा है कि गूगल प्ले के तहत प्रदान करता है Release Managment> App signing:

> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="

1
आप एक जीवन रक्षक हैं, धन्यवाद
यूसुफ एडेइमो

SHA-1 एक था।
शाम

19

यहाँ पूरा विवरण है (विंडोज़ के लिए)

1. डाउनलोड openssl या तो 3 या 4 (ङ साथ बेहतर काम करेगा) आपके सिस्टम 32bit या 64bit पर आधारित है।

2. डाउनलोड की गई ज़िप को C डायरेक्टरी के अंदर निकालें

3. निकाले गए फ़ोल्डर को बिन तक खोलें और पथ को कॉपी करें, यह कुछ इस तरह होना चाहिए C:\openssl-0.9.8k_X64\bin\openssl ( जैसे अंत में \ खुलता है)

4. (जेडके के बिन फ़ोल्डर के लिए पथ प्राप्त करें, यदि आप जानते हैं कि कैसे, इस पर ध्यान न दें)।

ओपन एंडरॉयड स्टूडियो ~ फाइल ~ प्रोजेक्ट स्ट्रक्चर (ctrl + alt + shift + s), लेफ्ट साइड पैनल में SDK लोकेशन सेलेक्ट करें, JDK लोकेशन को कॉपी करें और उसमें / बिन जोड़ें

तो अंतिम JDK स्थान जैसा होगा C:\Program Files\Android\Android Studio\jre\bin

हम Jdk स्थान प्राप्त करने के लिए इस विधि का अनुसरण कर रहे हैं क्योंकि आप मेरी तरह एम्बेडेड jdk का उपयोग कर सकते हैं

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

अब आपके पास OpenSSl स्थान और JDK स्थान है

5. अब हमें डिबग कीस्टोर लोकेशन की जरूरत है, उस ओपन सी के लिए ~ ~ यूजर्स ~> YourUserName ~>। थाइरोइड में एक फाइल नाम होना चाहिए debug.keystore, अब पाथ लोकेशन को कॉपी कर लें, यह कुछ इस तरह होना चाहिए

C:\Users\Redman\.android\debug.keystore

6. अब कमांड प्रॉम्प्ट खोलें और कमांड टाइप करें

cd YourJDKLocationFromStep4  

मेरे मामले में

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7. अब निम्नलिखित कमांड का निर्माण करें

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

मेरे मामले में कमांड जैसा दिखेगा

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

अब इस कमांड को कमांड प्रॉम्प्ट में दर्ज करें, अगर आपने कभी सही काम किया है तो आपसे पासवर्ड पूछा जाएगा (पासवर्ड एंड्रॉइड है)

Enter keystore password:  android

यही कारण है कि, आपको कुंजी हाश दिया जाएगा, बस इसे कॉपी करें और इसका उपयोग करें

हस्ताक्षरित KeyHash के लिए निम्नलिखित कमांड का निर्माण करें

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

अपना कीस्टोर पासवर्ड दर्ज करें, यदि आप गलत पासवर्ड दर्ज करते हैं तो यह गलत KeyHash देगा

ध्यान दें

यदि किसी कारण से यदि यह किसी पथ पर त्रुटि देता है तो उस पथ को दोहरे उद्धरण चिह्नों में लपेट दें। इसके अलावा विंडोज पावर शेल मेरे लिए अच्छी तरह से काम नहीं कर रहा था, मैंने गिट बैश (या कमांड प्रॉम्प्ट का उपयोग) किया।

उदाहरण

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

1
बहुत बहुत धन्यवाद, यह शुरुआती लोगों के लिए एक बहुत ही विस्तृत मार्गदर्शिका है!
पाब्लो क्वेमे सेप

@TamimProduct ओपनसीएल के k संस्करण के साथ एक ही उपरोक्त प्रक्रिया को आज़माता है और कोड देखता है। www.archive/p /
मनोहर रेड्डी

@TamimProduct यदि आप गलत पासवर्ड दर्ज करते हैं तो यह गलत कीश को लौटा देगा। क्या आपने भी कीस्टोर को हटाने के बाद फिर से एपीके का निर्माण किया था?
मनोहर रेड्डी

@TamimProduct फेसबुक एप्लिकेशन डाउनलोड और इंस्टॉल करें, फेसबुक एप्लिकेशन में लॉगिन करें। अपना ऐप खोलें और फेसबुक लॉगिन करें। यह आपको फेसबुक एप्लीकेशन में प्रमुख हैश देगा, यह जांचें कि क्या यह आपके जैसा है
मनोहर रेड्डी


16

एक छोटा उपाय भी है। बस इसे अपने ऐप में चलाएं:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

एक लंबे समय तक एफबी एसडीके ( यहां एक समाधान के आधार पर ) की आवश्यकता नहीं है:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

परिणाम "=" के साथ समाप्त होना चाहिए।


1
मैंने देखा कि मेरे प्रमुख हैश में एक '_' है जिसे FB द्वारा अनुमति नहीं है। हैश का उपयोग करने के लिए मुझे इसे '/' में बदलना होगा।
अब्देललीम हसौना

Facebook फ़ंक्शन ने मेरी कुंजी लौटा -AAAAAAAA_AAAAAA-AAAAAAAAAAदी क्योंकि Facebook द्वारा इसकी अनुमति नहीं है, PrintHashKey ने एक वैध प्रारूप में कुंजी लौटा दी+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov

@GrafOrlov कितना अजीब है। हो सकता है कि उनके पास कुछ नए एफबी एसडीके संस्करण पर बग हो। आपको उनके बारे में रिपोर्ट करनी चाहिए।
एंड्रॉइड डेवलपर

9

विंडोज के लिए:

  1. कमांड प्रॉम्प्ट खोलें और कमांड के नीचे पेस्ट करें

keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | opensl sha1 -binary | खुलता है base64

  1. पासवर्ड दर्ज करें: Android -> हिट दर्ज करें

  2. कॉपी जनरेट हैश की -> अपने डेवलपर खाते के साथ फेसबुक लॉगिन करें

  3. अपने फेसबुक ऐप पर जाएं -> सेटिंग्स -> "कुंजी हैश" विकल्प में हैश कुंजी दबाएं -> परिवर्तन सहेजें।

  4. अब फेसबुक लॉग-इन / शेयर आदि के साथ अपने एंड्रॉइड ऐप का परीक्षण करें।


मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

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

8

एपीआई 26 के बाद से, आप फेसबुक एसडीके की आवश्यकता के बिना कोटलिन में निम्न कोड का उपयोग करके अपना एचएचएच कुंजी उत्पन्न कर सकते हैं ।

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

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


आपका मतलब है कि मैं आपका कोड class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
asdfasdf

6

यही कारण है कि मैंने अपना प्राप्त किया:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

इसलिए जब आप कुंजी के बिना प्रवेश करने की कोशिश कर रहे हैं, तो एक अपवाद होगा। फेसबुक ने राइट को इस अपवाद में रखा। बस आपको इसे कॉपी करना है।


मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

6

यदि आपने Play store में पहले से ही ऐप अपलोड कर रखा है तो आप निम्न प्रकार से Hash Key उत्पन्न कर सकते हैं:

1) रिलीज मैनेजमेंट पर जाएं यहां

2) रिलीज मैनेजमेंट -> ऐप साइनिंग का चयन करें

3) आप हेक्स प्रारूप ऐप साइनिंग प्रमाणपत्र में SHA1 कुंजी देख सकते हैं।


4) SHA1 को हेक्स प्रारूप में कॉपी करें और इसे बेस 64 प्रारूप में रूपांतरित करें, आप इस लिंक का उपयोग SHA1: हेक्स के बिना कर सकते हैं ।


5) फेसबुक डेवलपर कंसोल पर जाएं और सेटिंग्स में (64 के आधार पर कन्वर्ट करने के बाद) सेटिंग्स -> बुनियादी -> कुंजी हैश को जोड़ें।



3

ओपन ssl डाउनलोड करें :

उसके बाद paths वैरिएबल में opensl \ bin जोड़ें:

मेरा कंप्यूटर -> गुण -> उन्नत कॉन्फ़िगरेशन -> उन्नत -> सिस्टम चर -> सिस्टम चर के तहत पथ का पता लगाता है, और इसे इसके अंत में जोड़ देता है: आपकाFullOpenSSLDir \ bin;

अब अपने jdk \ bin फोल्डर पर एक कमांड लाइन खोलें C: \ Program Files \ Java \ jdk1.8.0_40 \ bin (विंडोज़ होल्ड शिफ्ट पर राइट क्लिक करें -> यहां कमांड लाइन खोलें) और उपयोग करें:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

और पासवर्ड देने के बाद उत्पन्न होने वाली 28 लेन नंबर की प्रतिलिपि बनाएँ।


मैंने देखा कि मूल उत्तर में पहले से ही ओपनसेल लिंक है। लेकिन इसका अभी भी सिस्टम चर के लिए उपयोगी है।
sagits

मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा

बेशक, क्या आप सुनिश्चित हैं कि आपने 28 लंबाई की संख्या उत्पन्न की है? यदि हां, तो अब आपको फेसबुक डेवलपर (Google पर खोज) साइट पर जाना होगा और सेटिंग्स के तहत एक नया एप्लिकेशन बनाना होगा, आप एक नया एंड्रॉइड ऐप जोड़ सकते हैं, वहां आप अपना कीहश और अपनी गतिविधि का नाम पेस्ट करें (जहां लॉगिन कोड स्थित है) )। फेसबुक पर इसके बारे में भी एक ट्यूटोरियल Theres
sagits

त्वरित उत्तर के लिए धन्यवाद, मैं इसे शीघ्र ही
आज़माऊंगा

3

इसे अपने ऐप में चलाएं:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

या यह:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

और फिर लॉग को देखें।

परिणाम "=" के साथ समाप्त होना चाहिए।

समाधान यहाँ और यहाँ पर आधारित है


3

आसान तरीका -> खुलता स्थापित नहीं है -> प्रयोग करें!

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

डिफ़ॉल्ट पासवर्ड "android" है

हम में से अधिकांश ने Git Bash स्थापित किया है इसलिए यह मेरा पसंदीदा तरीका है।


3

इससे newbees को भी मदद मिलेगी।

सिर्फ @ coder_For_Life22 के उत्तर में अधिक विवरण जोड़ रहा है।

यदि यह उत्तर आपको अपवोट करने में नहीं भूलता है। यह हमें प्रेरित करता है।

इसके लिए आपको पहले से ही

इस उदाहरण के लिए ऐप की कीस्टोर फाइल और पासवर्ड का रास्ता पता होना चाहिए । कुंजी को "c: \ keystorekey \ new.jks" पर संग्रहीत माना जाता है।

1. इस पृष्ठ को खोलें https://code.google.com/archive / p / Opensl-for-windows / download

2. अपने विंडोज़ ओएस के अनुसार 32 या 64 बिट ज़िप फ़ाइल डाउनलोड करें।

3. डाउनलोड की गई फ़ाइल को निकालें जहाँ आप चाहते हैं और पथ को याद रखें।

4. इस उदाहरण के लिए हम मानते हैं कि आपने फ़ोल्डर को डाउनलोड फ़ोल्डर में निकाला है।

इसलिए फ़ाइल का पता "C: \ Users \ 0 \ Downloads \ खुलता है \ _sll-0.9.8e_X64 \ bin \ opensl.exe" होगा;

5. अब कीबोर्ड प्रेस विंडो + आर बटन पर।

6. यह रन बॉक्स खोलेगा। इ। इस पथ के अंत में "keytool.exe" फ़ाइल के रूप में "बिन" जोड़ें, हमें इसकी आवश्यकता है, इस फ़ोल्डर के अंदर है। इस उदाहरण के लिए मुझे लगता है,

7. cmd टाइप करें और Ctrl + Shift + Enter दबाएं

8. यह प्रशासक के रूप में कमांड प्रॉम्प्ट खोलेगा।

9. यहां जावा के बिन फ़ोल्डर में नेविगेट करें:

यदि आप एंड्रॉइड स्टूडियो द्वारा दिए गए jre का उपयोग करते हैं, तो आपको निम्न प्रकार से रास्ता मिल जाएगा:
a। एंड्रॉयड स्टूडियो खोलें।
ख। file-> प्रोजेक्ट स्ट्रक्चर
c। बाएँ फलक में, 'SDK स्थान'
d पर क्लिक करें । दाएँ फलक में, 'JDK स्थान' नीचे आपका jre पथ है। "C: \ Program Files \ Java \ jre-10.0.2 \ bin" 10. अब ऊपर दिए गए रास्तों के साथ निम्नानुसार कमांड निष्पादित करें:



यदि आपने 32 बिट जावा स्थापित किया है तो यह
"C: \ Program Files (x86) \ Java \ jre-10.0.2 \ bin" में होगा


keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. आपसे पासवर्ड मांगा जाएगा, कीस्टॉर की बनाते समय आपको जो पासवर्ड दिया गया है, उसे दें।

    !!!!!! यह आपको कुंजी देगा

त्रुटियाँ: यदि आपको मिलती हैं:
---
'कीटल' को आंतरिक या बाह्य कमांड के रूप में नहीं पहचाना जाता है
---
इसका मतलब है कि जावा कहीं और स्थापित है।


3

चरण 1-> C: \ Program Files \ Java \ jdk1.6.0_43 \ bin>

स्टेप 2-> कीटल-लिस्ट -v -स्टीस्टोर C: \ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

u मिला SHA1 मान इस लिंक पर क्लिक करें यू कन्वर्ट SHA1 मान एचएएसएच कुंजी पर

im 100% यकीन है कि यह लिंक यू की मदद करेगा



2

आप https://console.developers.google.com/projectselector/apis/credentials से अपने सभी फ़िंगरप्रिंट प्राप्त कर सकते हैं
और इसे कोहाश में बदलने के लिए इस कोटलिन कोड का उपयोग कर सकते हैं :

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}

1

https://developers.facebook.com/docs/android/getting-started/

4.19.0 - 25 जनवरी, 2017

फेसबुक एसडीके

संशोधित

आवेदन शुरू होने पर फेसबुक एसडीके अब ऑटो इनिशियलाइज़ हो गया है। ज्यादातर मामलों में FacebookSDK.sdkInitialize () की मैन्युअल कॉल की अब जरूरत नहीं है। देखें अपग्रेड मार्गदर्शिका अधिक जानकारी के लिए।

डिबग के लिए

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 (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

1

बस इस कोड को अपने OnCreateView या OnStart Actvity में चलाएं और यह फ़ंक्शन आपको विकास कुंजी हैश लौटाता है ।

private String generateKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = (MessageDigest.getInstance("SHA"));
            md.update(signature.toByteArray());
            return new String(Base64.encode(md.digest(), 0));
        }
    }catch (Exception e) {
        Log.e("exception", e.toString());
    }
    return "key hash not found";
}

0

मुझे वही सटीक समस्या हो रही थी, मुझसे पासवर्ड नहीं पूछा जा रहा था, और ऐसा लगता है कि मेरे पास कीस्टॉर फ़ाइल के लिए गलत रास्ता था।

वास्तव में, यदि कीलेट ने आपके द्वारा निर्धारित कीस्टोर को नहीं ढूंढा है, तो यह एक बना देगा और आपको गलत कुंजी देगा क्योंकि यह सही उपयोग नहीं कर रहा है।

सामान्य नियम यह है कि यदि आपसे पासवर्ड नहीं मांगा जा रहा है तो आपके पास गलत कुंजी उत्पन्न हो रही है।


मैंने कुंजी हैश उत्पन्न की है, लेकिन यह नहीं पता है कि उस कुंजी को कहां रखा जाए, क्या आप मेरा मार्गदर्शन करेंगे? मैं Ubuntu पर Android स्टूडियो चला रहा हूं।
अपूर्वा



0

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

इस उपर्युक्त कमांड में 2 परिवर्तन 1.Dakak === अपने सिस्टम द्वारा प्रतिस्थापित करें USERNAME 2.C: \ Users \ Deepak \ ssl === अपने ओपन एसएसएल पथ को फिर से भरें।

इस कमांड को रन करें और इस तरह आउटपुट प्राप्त करें

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ opensl" sha1 -binary | "C: \ Users \ Deepak \ ssl \ bin \ खुलता है" base64 keystore पासवर्ड दर्ज करें: ****** ga0RGNY ****************** =


0

अगर किसी को ओपनसीएल के साथ समस्या है, तो इस निर्देश का पालन करें:

  1. ज़िप में खिड़कियों के लिए "खुलता है" डाउनलोड करें
  2. आप चाहते हैं कि पथ में ज़िप निकालें।
  3. ज़िप के अंदर "बिन" फ़ोल्डर के लिए पथ प्राप्त करें

बस

https://sourceforge.net/projects/openssl/files/latest/download

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.