अमान्य कुंजी हैश के साथ Android Facebook एकीकरण


194

मेरे एक ऐप में मुझे फेसबुक से डेटा प्राप्त करने की आवश्यकता है ... मैं यह कर रहा हूं:

मैंने ऐप आईडी बनाई है । यह सफलतापूर्वक लॉग इन करता है, लेकिन लॉग आउट करने के बाद, मैं लॉग इन करता हूं, और फिर यह मुझे देता है:

अमान्य कुंजी हैश त्रुटि फेसबुक का स्क्रीनशॉट

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

यह मेरा कोड है:

if (FB_APP_ID == null) {
    Builder alertBuilder = new Builder(this);
    alertBuilder.setTitle("Warning");
    alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                            "specified before running this example: see App.java");
    alertBuilder.create().show();
}

// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);

// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
    dispatcher.runHandler("stream");
}
else {
    dispatcher.runHandler("login");
}

12
लेकिन यह ligin यह काम नहीं कर अगर मैं कर रहा हूँ के लिए लॉग इन लॉगआउट किया के बाद पहली बार ठीक से चलता है
एंड्रॉयड

1
हाँ, मैंने कोशिश की है {PackageInfo info = getPackageManager () .PPageageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES) का उपयोग करके बनाया गया; के लिए (हस्ताक्षर पर हस्ताक्षर: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
एंड्रॉइड

1
मैंने इस समस्या को यहाँ हल किया! यहाँ समझ में आया शांत! [ Stackoverflow.com/questions/5306009/… ] [1]
मैडी

3
@ एंड्रॉइड भले ही यह पुराना है, लेकिन मुझे इसका उल्लेख करना चाहिए। यह तब नहीं होता है जब कोई उपयोगकर्ता लॉगआउट करता है और फिर लॉगिन करता है। ऐसा तब होता है जब आप दूसरी बार डिबग करते हैं यानी डिबगिंग करते समय ऐप को फिर से इंस्टॉल करते हैं। इस प्रकार, हैश बदल जाता है। हस्ताक्षरित ऐप (उत्पादन तैयार) के मामले में ऐसा नहीं होता है
निलय विश्वकर्मा

1
अगर आप फेसबुक ऐप को अनइंस्टॉल करते हैं तो क्या आपको वही त्रुटि मिलती है? मैंने दो फोन से परीक्षण किया और यह त्रुटि केवल तब होती है जब फेसबुक ऐप इंस्टॉल होता है।
जैमे मोंटोया

जवाबों:


274

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

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

इन कदमों का अनुसरण करें:

निम्नलिखित कोड पेस्ट करें oncreate()

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
}

"Com.example.packagename" को अपने पैकेज के नाम के साथ उपरोक्त कोडिंग में बिना किसी असफलता के संशोधित करें (आप Android मेनिफ़ेस्ट फ़ाइल में अपने पैकेज का नाम पा सकते हैं)।

अपना एप्लिकेशन चलाएं। उस गतिविधि पर जाएं जहां आपने उपरोक्त कोड चिपकाया था। LogCat फ़ाइल में, "KeyHash" के लिए खोजें। आपको एक प्रमुख हैश मिल सकता है। कुंजी हैश की प्रतिलिपि बनाएं और फेसबुक एप्लिकेशन डैशबोर्ड पृष्ठ पर जाएं। सेटिंग्स में जाएं और नीचे दी गई छवि की तरह विवरण दर्ज करें।

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

एक बार जब आपने उपरोक्त चरण पूरा कर लिया, तो ऐप को फिर से लॉन्च करें। अब आप फेसबुक पर लॉग इन कर सकते हैं। कुंजी हैश के बारे में अधिक जानकारी के लिए , लिंक की जाँच करें

यदि आप सेटिंग पृष्ठ में गलत जानकारी जोड़ते हैं, तो इसका मतलब है कि यह कुछ त्रुटि देगा। इसलिए वहां सही जानकारी का उपयोग करें। और यह भी कि यदि जनता (आपके अलावा अन्य) को आपके आवेदन का उपयोग करने की आवश्यकता है, तो इसका मतलब है कि आपको अनुमति (सेटिंग के आगे "स्थिति और समीक्षा" में "हाँ" को सक्षम करने की आवश्यकता है )


20
इस तरह, सबसे अधिक संभावना है कि आपको डीबग कीस्टोर के लिए एक महत्वपूर्ण हैश मिला है। यह विकास मोड में आपके लिए काम करता है, आपके उत्पादन मोड के लिए आवश्यक कार्य नहीं करता है। कम से कम, यह मेरे उत्पादन ऐप के लिए काम नहीं करता है।
लियांगजुन

3
धन्यवाद, आपने मेरा बहुत समय बचाया ... facebook आधिकारिक डॉक्टर को यह नहीं पढ़ना चाहिए कि यह बकवास है
DjP

बहुत बहुत धन्यवाद दोस्त!
किन्नपिनग

अरे इस कोड द्वारा पैकेजइनफो जानकारी = getPackageManager ()। GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); के लिए (हस्ताक्षर पर हस्ताक्षर: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); एक अलग हैश कुंजी तब भेजी जाती है जब मैं विंडो पर cmd में कमांड चलाता था मेरी हैश कुंजी अलग थी और मैंने इसे FB में जोड़ा है लेकिन फिर भी लॉग प्रोग्राम कोड के हैश को दिखाता है
सागर देवंगा

1
मुझे बहुत समय बचाया। अभी भी सर्वश्रेष्ठ। कीहश के लिए क्रिया की जाँच करें और इसे फेसबुक डेवलपर्स पेज में कॉपी और पेस्ट करें। इसे मैन्युअल रूप से टाइप करने की गलती न करें! इसके अलावा, यह समझें कि कीहैश हर बार आपके द्वारा ऐप को अनइंस्टॉल करने और इंस्टॉल करने के लिए बदल जाता है।
संजीव

188

यदि आप Google Play App साइनिंग का उपयोग कर रहे हैं:

Google Play कंसोल में ऐप साइनिंग सेक्शन खोलें , और ऐप साइनिंग सर्टिफ़िकेट के तहत SHA-1 हैश प्राप्त करें । फिर इसे बेस 64 में कनवर्ट करें , उदाहरण के लिए इस टूल के साथ: हेक्साडेसिमल -> बेस 64 स्ट्रिंग डिकोडर

कंसोल स्क्रीनशॉट

Base64 स्क्रीनशॉट में बदलें


14
महोदय! आप एक जीवन रक्षक हैं! बहुत सारा प्यार। मैं प्ले स्टोर के हस्ताक्षर का उपयोग कर रहा था, जबकि मैंने फेसबुक की कंसोल में अपनी स्थानीय रिलीज़ कुंजी से हैश को रखा था।
ताहा रुशिन

4
आप मेरी जान बचाते हैं, मैं प्रतिक्रिया का उपयोग कर रहा हूं, किसी ने प्ले स्टोर एप्लिकेशन पर हस्ताक्षर करने के बारे में उल्लेख नहीं किया है
TomSawyer

7
धन्यवाद! यह काम करता हैं! आप इसके लिए टर्मिनल कमांड का भी उपयोग कर सकते हैं: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
यूरी सेरेडयुक

4
यह उत्पादन पर्यावरण के लिए किया जाना चाहिए !!! थम्स अप!
बाईसी

बिल्कुल वही जो मैं जानना चाहता था। Hashkey डिबग में हर बार बदल जाता है जिसे आप अनइंस्टॉल करते हैं और ऐप इंस्टॉल करते हैं। आप जीवन आसान बनाने के लिए धन्यवाद ppl!
संजीव

123

यदि आप इस समस्या का सामना कर रहे हैं, तो इस कुंजी को अपने developer.facebook.com में डालें :

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

फिर सुनिश्चित करें कि आपका ऐप developer.facebook.com पर लाइव है

यह ग्रीन सर्कल ऐप को लाइव होने का संकेत दे रहा है:

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

यदि ऐसा नहीं है तो अपने ऐप को लाइव करने के लिए इन दो चरणों का पालन करें:

चरण 1 अपने आवेदन पर जाएं → सेटिंगसंपर्क ईमेल जोड़ें और परिवर्तन सहेजें लागू करें।

चरण 2 पर जाएं एप्लिकेशन समीक्षा विकल्प और यकीन है कि यह टॉगल है हाँ । मैंने एक स्क्रीनशॉट जोड़ा:

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

नोट: यदि आप हैशेक को कॉपी करना चाहते हैं, तो LogCat में BlueServiceQueue की जांच करें ।


5
क्या फ़ोन से उस हैश को कॉपी करने का एक आसान तरीका है?
डैनियल शटज

4
@DanielShatz यह logcat में दिखाई देता है। मुझे पता चला कि मैंने इसे पत्र द्वारा कॉपी किया था।
एम।

4
@DanielShatz BlueServiceQueuelogcat में टैग के लिए देखें
Alaa M.

4
इस जवाब ने मेरे लिए काम किया। मैन्युअल रूप से हैश टाइप करने के कुछ प्रयासों के बाद इसने मुझे एक ही त्रुटि दी, समस्या यह थी, मैंने कम केस L "l" के बजाय कैपिटल i "I" टाइप किया। इसका एहसास करने के लिए मुझे कुछ समय लगा।
मार्कस

1
यह काम कर रहा है लेकिन Im सोच रहा हूँ कि FB को यह हैश की कहाँ से मिलेगी? कोई आश्चर्य नहीं? त्रुटि अच्छी कार्यशील हैश कुंजी प्रदर्शित कर रही थी, लेकिन सभी आदेशों के साथ, या Google ऐप साइन करने के लिए बेस 64 से शेट 1 प्राप्त करने से मुझे वह कुंजी दी गई जो एफबी ने त्रुटि में दिखाई ... वैसे भी चाल के लिए धन्यवाद
उमर 3

82

मुझे भी यही समस्या हुई। मुझे यकीन था कि यह बहुत छोटी गलती के कारण था और हाँ यह था!

मुझे इसका हल मिला:

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

पासवर्ड दर्ज करें: "android"। मेरे मामले में यह एकमात्र समस्या थी।

----- डिबग कुंजी हैश उत्पन्न करने के लिए , इस कमांड का उपयोग करें -

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

पासवर्ड दर्ज करें: 'android'

----- रिलीज़ कुंजी हैश उत्पन्न करने के लिए , इस कमांड का उपयोग करें -

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

इस कमांड को निष्पादित करने के बाद अपना कीस्टोर पासवर्ड प्रदान करें।


5
पासवर्ड के रूप में "एंड्रॉइड" का उपयोग करना मेरे लिए काम करता है। यह हैरान करने वाला है।
एडीबी

3
हैश की जेनरेट करते समय पासवर्ड के रूप में इस "एंड्रॉइड" का उपयोग करें।
आकाश बिसारिया

2
विंडोज़ मशीन पर, यह सुनिश्चित करें कि ओपेनस्ले \ बिन और जावा .. \ बिन फ़ोल्डर के लिए पथ चर ठीक से सेट है। फेसबुक से कमांड का उपयोग करने में सक्षम होने के लिए HOMEPATH चर भी सेट करें।
KawaiKx

1
कम से कम मैक पर मुझे यह काम करने के लिए जावा जेडीके स्थापित करना पड़ा। अन्यथा उपरोक्त डिबग कमांड अभी भी एक हैश उत्पन्न करता है, लेकिन हैश काम नहीं करता है और आपको पासवर्ड के लिए संकेत नहीं मिलेगा। JDK स्थापित होने के साथ यह एक आकर्षण की तरह काम करता है।
lejonl

1
यह उत्तर कॉर्सेट एंकर होना चाहिए
इवान नगो

20

मैंने उसी समस्या का अनुभव किया। मैंने इस अजीब व्यवहार के संभावित कारणों पर एक छोटा शोध किया और मुझे निम्नलिखित पता चला:

  • एक नए फेसबुक ऐप के पहले निष्पादन के दौरान, यह किसी भी कुंजी हैश को निर्दिष्ट नहीं करने पर भी कनेक्शन / लॉगिन की अनुमति देगा

  • मेरे लिए, फेसबुक ने जो ट्यूटोरियल प्रदान किया है, वह सही कुंजी हैश उत्पन्न नहीं करता है, क्योंकि यह गलत कॉन्फ़िगरेशन दे रहा था । जब निष्पादित:

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

सुनिश्चित करें कि आप सभी गुणों की जाँच करें - HOMEPATH, कीस्टोर का अस्तित्व, आदि। शायद आपको पासवर्ड भी प्रदान करना होगा।

  • क्या उचित विन्यास उत्पन्न किया गया था @Mahendran द्वारा सुझाए गए समाधान

  • इसके अलावा, यदि आप मूल रूप से पोस्ट की गई त्रुटि ( http://i.stack.imgur.com/58q3v.png ) देखते हैं, तो संभवत: स्क्रीन पर दिखाई देने वाली कुंजी हैश आपका वास्तविक है। यदि कुछ और काम नहीं करता है, तो इसे फेसबुक में इनपुट करने का प्रयास करें।

मुझे उन सभी परिणामों के साथ मिला: विंडोज 7 64-बिट संस्करण, एंड्रॉइड स्टूडियो 1.2.2, जेडीके 7।


2
लिनक्स संस्करण: `कीटल -एक्सपोर्टसर्ट-कालिस androiddebugkey -Stystore $ HOME / .android / debug.keystore | opensl sha1 -binary | खुलता है base64`
ruX

1
बस डिवाइस स्क्रीन पर फेसबुक द्वारा दिखाए गए व्हाट्स इनपुट, कि काम करना चाहिए। नोट के लिए धन्यवाद @ मर्टिन
राल्फगैब

14

Android के लिए Facebook लॉगिन के अनुसार , आपको कुंजी हैश मान प्रदान करना होगा। इसे प्राप्त करने के लिए, आपको अपने आवेदन पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी की आवश्यकता होगी ।

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64

1
बस एक टिप्पणी जोड़ना चाहते हैं, अपने उत्पादन कीस्टेर का उपयोग करें।
लियांगजुन

2
@ लिआंगजुन वास्तव में आपको अपनी सभी कुंजियों का उपयोग करना चाहिए क्योंकि अन्यथा आप डिबग वातावरण में फेसबूक लॉगिन का परीक्षण नहीं कर पाएंगे।
पीजूसन

2
@ पायस, हां, मैं वास्तव में दोनों कुंजियों का उपयोग करता हूं। मुझे यह स्पष्ट रूप से कहना चाहिए था।
लियांगुन

मुझे इस कमांड के लिए एक त्रुटि मिलती है (कोई जावा रनटाइम वर्तमान, इंस्टॉल का अनुरोध नहीं करता है।) लेकिन फिर भी एक कुंजी मिलती है, हालांकि अमान्य है और मैं सिर्फ लॉगकैट से कॉपी पेस्ट करता हूं जो बताता है कि मुझे पहचाना नहीं गया है।
Cristi Băluță

8

आपको दो कुंजी हैश, एक डीबग के लिए और एक रिलीज़ के लिए बनाना होगा।

के लिए डीबग कुंजी हैश:

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

डिबग कुंजी हैश स्रोत है

के लिए रिलीज कुंजी हैश:

OS X पर, रन करें ( <>अपने मानों के बीच क्या है इसे बदलें ) :

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

विंडोज पर, का उपयोग करें ( <>अपने मूल्यों के साथ क्या है ) बदलें :

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

रिलीज कुंजी हैश स्रोत


मुझे इस कमांड के लिए एक त्रुटि मिलती है (कोई जावा रनटाइम मौजूद नहीं है, इंस्टॉल का अनुरोध करें।) लेकिन फिर भी एक कुंजी भी मिलती है, हालांकि अमान्य है और इसे काम करने के लिए मैं बस
लॉगकैट

हो सकता है कि आपने कमांड लाइन में अपने जावा और कीटूल के पैट को सेट किया हो? @ CristiBăluță
MBH

7

मैंने पिछले सभी उत्तरों की कोशिश की और कुछ भी मेरे ग्राहकों के साथ मेरे मामले में मदद नहीं की!

तब मेरे ग्राहक को याद आया कि उसने अपने डिवाइस में फेसबुक ऐप इंस्टॉल किया था। उसके बाद उसे हटा दिया। लॉगिन पूरी तरह से काम किया।

हैशेक बदल दिया गया था, और मैंने फेसबुक डेवलपर्स कंसोल में पुरानी हैश कीज़ को त्रुटि से कुंजी के रूप में बदल दिया है (जैसा कि ऊपर बताया गया है), और यह काम करता है!

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


हां यहीं मुझे डिवाइस पर फेसबुक ऐप इंस्टॉल करने के बाद यह त्रुटि मिली। इसलिए वर्तमान में मैंने फेसबुक हैश सेटिंग्स पर 2 हैश कुंजी लगाई है।
stuckedoverflow

3
मेरी भी ऐसी ही स्थिति है। जिस चीज़ ने मुझे मदद की, वह आपके FB पृष्ठ पर जाकर - सेटिंग्स - ऐप्स - सूची से ऐप हटा दें। हैश कुंजी बदलें और fb ऐप और अपने ऐप को फिर से इंस्टॉल करें। और अब यह काम करता है ...
anna_manzhula

4

मैंने इस समस्या को हल किया है:

सबसे पहले आपको SHA-1 मान प्राप्त करना होगा। उसके लिए दो तरीके हैं।

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

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

या

कीस्टोर फ़ाइल से SHA-1 मान प्राप्त करने के लिए ।

keytool -list -v -keystore keystore_file_name.jks -alias key0

कॉपी SHA-1 इस तरह अपने क्लिपबोर्ड मूल्य:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

और अपने SHA-1 मान को Base64 में बदलने के लिए Hexadecimal -> Base64 string decoder खोलें ।

इसके लिए फेसबुक की आवश्यकता होती है।

जेनरेट किया गया हैश "***********************" = प्राप्त करें और फेसबुक ऐप पर कुंजी हैश की प्रतिलिपि बनाएँ।


3

मुझे भी यही समस्या आ रही थी। पहले लॉग इन करें, बस ठीक है, लेकिन फिर, एक अमान्य कुंजी हैश।

एकता के लिए फेसबुक SDK गलत कुंजी हैश हो जाता है। यह "C: \ Users \" आपके उपयोगकर्ता ".android \ debug.keystore" से कुंजी प्राप्त करता है और, एक आदर्श दुनिया में, इसे आपकी परियोजना में आपके द्वारा बनाए गए कीस्टोर से प्राप्त करना चाहिए। इसलिए यह आपको बता रहा है कि कुंजी हैश पंजीकृत नहीं है।

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


3

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

  1. इस कोड को अपनी मुख्य गतिविधि में कॉपी और पेस्ट करें

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                               "com.example.packagename",
                               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) {
    }
  2. एक हस्ताक्षरित एपीके फ़ाइल बनाएं

  3. अपने फोन को लैपटॉप से ​​कनेक्ट करें और सुनिश्चित करें कि यह जुड़ा हुआ है।
  4. अपने फ़ोन में एपीके फ़ाइल को स्थापित करें और चलाएं, मैन्युअल रूप से रिलीज़ को अपने फ़ोन में स्थानांतरित करके।
  5. अब Android LogCat (फ़िल्टर कीहैश का उपयोग करें ) देखें। आपको फेसबुक के लिए अपनी रिलीज़ हैश कुंजी देखनी चाहिए। बस इसे अपने में कॉपी और पेस्ट करें https://developers.facebook.com/apps। यह सेटिंग्स के तहत है।
  6. अब आप उस ऐप का परीक्षण कर सकते हैं जो पूरी तरह से अच्छी तरह से काम करना चाहिए।

यदि आप हस्ताक्षर किए गए एपीके को जनरेट करते हैं तो कोड ही काम करता है। अन्यथा यह आपको केवल डीबग दे देगा APK हैश जो जारी किए गए APK के लिए बेकार है
पेट फूलना

नमस्ते, जब मैंने फेसबुक ऐप को जेनरेट किया हैशेक किया था तो यह ठीक काम करता है लेकिन जब यह किसी अन्य डिवाइस में चलाने की कोशिश करता है तो यह फिर से 'INVALID HASH KEY' दिखा रहा है कि कैसे मैं फेस बुक के लिए हैश कुंजी सेट कर सकता हूं जिसमें सभी डिवाइस में काम हो।
दीपक

2

लंबे शोध के बाद, हमें एक समाधान मिला।

हमने अनुमतियाँ निर्धारित की थीं:

loginButton.setReadPermissions(public_profile email);

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

उपरोक्त लाइन को बदलने के लिए सरल उपाय था:

loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));

और यह आनंद की तरह काम किया!

फेसबुक को भ्रामक अमान्य हैश कुंजी त्रुटि के बजाय सही अपवाद वापस करना चाहिए।


मेरे पास एक ही समस्या है। मैंने आपके समाधान की कोशिश की, लेकिन अभी भी मेरी समस्या का समाधान नहीं कर सके @ user3663906
BekaKK

2

इतने परीक्षणों के बाद मैं इसके समाधान पर लड़खड़ा गया। मैंने फेसबुक डेवलपर कंसोल के लिए डिबग और रिलीज़ कुंजी दोनों को उत्पन्न और जोड़ा और फिर भी त्रुटि मिली।

मेरे लिए काम करने वाला एकमात्र समाधान Google से OpenSSL प्रोग्राम को अनइंस्टॉल करना और विंडोज से Win32 / Win64 OpenSSL डाउनलोड करना है।

यह वास्तव में जादू की तरह काम करता है।


2

हालाँकि इस प्रश्न का उत्तर उन उपयोगी तरीकों से दिया गया है, जिन्हें मैं अभी जोड़ना चाहता था, जब मैंने रफाल मेल्क्स के उत्तर का पालन किया (Google Play कंसोल पर हैश कीज़ का उपयोग करके) मैं एप्लिकेशन साइनिंग SHA1 कुंजी का उपयोग करने में सक्षम नहीं था , फिर भी जेनेरिक मिला फेसबुक से त्रुटि। इसके बजाय मुझे अपलोड प्रमाणपत्र भाग (Google Play कंसोल पर ऐप साइनिंग भाग के नीचे) से SHA-1 प्रमाणपत्र फिंगरप्रिंट का उपयोग करने की आवश्यकता थी । एक ही प्रक्रिया अन्यथा;

  1. Google Play कंसोल में अपलोड प्रमाणपत्र अनुभाग से SHA-1 प्रमाणपत्र फिंगरप्रिंट कॉपी करें

  2. SHA-1 का उपयोग करके कनवर्ट करें: http://tomeko.net/online_tools/hex_to_base64.php और आउटपुट (base64) की प्रतिलिपि बनाएँ

  3. इसे डेवलपर Hfacebook.com पर मुख्य डैश इनपुट में पेस्ट करें और परिवर्तन सहेजें।

उम्मीद है कि यह उत्तर निरर्थक नहीं है और यह किसी ऐसे व्यक्ति की मदद करेगा जो इसे ऐप साइनिंग प्रमाणपत्र के साथ काम नहीं कर सकता है।

अब फेसबुक लॉगइन मेरे ऐप में डिबग और रिलीज़ मोड दोनों में काम करता है।


1

निम्नलिखित कोड को अपने OnCreate विधि में पेस्ट करें:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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();
}

बस पैकेज का नाम संशोधित करें। फिर अपनी LogCat फाइल पर जाएं और यहां डिबग सर्च को चुनें। फिर आपको हैश की मिलेगी। अब इस हैश कुंजी को कॉपी करें और फिर developer.facebook.app_id साइट पर जाएं, अपनी हैश कुंजी संपादित करें, और दबाएं Save। अब अपने Android प्रोजेक्ट को फिर से चलाएँ। मुझे लगता है कि मुद्दा हल हो जाएगा।


7
दूसरे लड़के को दोहराते हुए
बेटो कालदास

1

यह उसी समस्या के साथ किसी की मदद कर सकता है।

  1. नीचे दिए गए कोड का उपयोग करके मुख्य हैश उत्पन्न करें

    keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

    Keytool का उपयोग कैसे करें

  2. इसे फेसबुक डेवलपर में आवश्यक फ़ील्ड में पेस्ट करें

  3. एंड्रॉइड स्टूडियो में, मेनू फ़ाइलप्रोजेक्ट संरचना

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

    हस्ताक्षर मापदंडों को जोड़ें।

  4. स्वाद का चयन करें

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

    हमारे द्वारा बनाए गए हस्ताक्षर कॉन्फ़िगरेशन का चयन करें।

  5. बिल्ड प्रकार का चयन करें

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

  6. बिल्ड वेरिएंट चुनें और उसका निर्माण करें

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


1

जब मैं अपने ऐप को डिबग कर रहा था तो मुझे भी यही समस्या थी। मैंने उस हैश को फिर से लिखा है जिसे आप संलग्न छवि में पार कर चुके हैं (फेसबुक जिसे अमान्य कहता है) और इसे फेसबुक के डेवलपर्स कंसोल में कुंजी हैश में जोड़ दिया है। बस टाइपो से सावधान रहें।

यह समाधान एक उचित समाधान की तुलना में एक आसान समाधान की तरह है।


1

यदि आप मैन्युअल रूप से कीहाश टाइप कर रहे हैं (उदाहरण के लिए मोबाइल से फेसबुक डैशबोर्ड पर), तो छोटे एल और पूंजी I के बीच अंतर करना सुनिश्चित करें।


1
try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "www.icognix.infomedia",
                           PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        Log.d("YourKeyHash: ", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

0

Facebook ने जो उपयोग किया है वह डिबग के लिए डिफ़ॉल्ट पासवर्ड और उपनाम नहीं है। आपको इसे निम्नलिखित में बदलने की आवश्यकता है और यह काम करेगा।

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

यदि आपने डिफ़ॉल्ट पासवर्ड के साथ कुछ भी नहीं बदला है तो यह "एंड्रॉइड" होना चाहिए ।

आप इसे build.gradle फ़ाइल में भी कॉन्फ़िगर कर सकते हैं। लेकिन हैश उत्पन्न करने के लिए समान उपनाम पासवर्ड का उपयोग किया जाना चाहिए:

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}

0

यहाँ बहुत सारे सही उत्तर हैं। बस एक बात:

प्राप्त हैश को एप्लिकेशनसेटिंग्समुख्य में पेस्ट करें , तेज शुरुआत ट्यूटोरियल के माध्यम से नहीं।


0

मुझे भी यही समस्या थी।

सुनिश्चित करें कि आप एपीके फ़ाइल उसी डिवाइस के साथ बनाते हैं जिसने हैशकी उत्पन्न किया था जो फेसबुक डेवलपर्स सेक्शन में संग्रहीत है।


0

मैंने इसे निम्नलिखित में जोड़कर तय किया MainApplication.onCreate:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.genolingo.genolingo",
                           PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
        KeyHash.addKeyHash(hash);
    }
}
catch (PackageManager.NameNotFoundException e) {
    Log.e("PackageInfoError:", "NameNotFoundException");
}
catch (NoSuchAlgorithmException e) {
    Log.e("PackageInfoError:", "NoSuchAlgorithmException");
}

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

फिर मैंने नए प्रमुख हैश का निर्धारण करने के लिए LogCat का उपयोग किया और इसे फेसबुक जोड़ा जैसा कि अन्य उपयोगकर्ताओं ने रेखांकित किया है।


0

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

यह मेरा मुद्दा था। डिबग रिलीज़ काम कर रही थी, लेकिन रिलीज़ एपीके नहीं था।


-1

अपनी गतिविधि के onCreate () विधि में नीचे दिए गए कोड का उपयोग करें:

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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

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


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