2012-04-06 17 views
6

फेसबुक एंड्रॉयड ट्यूटोरियल में हम एक कुंजी हैश बनाने के लिए निम्नलिखित कोड का उपयोग करने के लिए कहा जाता है:फेसबुक कुंजी हैश कैसे बनाएं?

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

क्या यह सभी स्थितियों में उपयोग करने के लिए सही कोड है? उदाहरण के लिए ~/.android/debug.keystore के बजाय इसे C:/folderone/foldertwo/.android/debug.keystore जैसा कुछ चाहिए?

जैसा कि आप देख सकते हैं कि मुझे उलटा हुआ है कि उलटा कॉमा आवश्यक है या नहीं, भले ही पूर्ण पथ आवश्यक हों या नहीं!

क्या कोई वास्तविक दुनिया का उदाहरण प्रदान करने में सक्षम है?

देखें
https://developers.facebook.com/docs/mobile/android/build/#sso

+0

आप गूगल से openssl है जरूरत है ... चरणों में [कड़ी] दी पालन [1] [1]: http://stackoverflow.com/questions/4388992/key-hash- for-android-facebook-app/6665263 # 6665263 –

+0

आप यहां वास्तविक उदाहरण देख सकते हैं http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

आपको एवी [यहां।] द्वारा जवाब मिलना चाहिए (http://stackoverflow.com/a/6665263/5861880) – abosamy

उत्तर

2

ग्रहण में, खिड़की ->वरीयताओं ->एंड्रॉयड ->निर्माण ->डिफ़ॉल्ट डिबग कुंजीस्टोर, पथ कॉपी ~/.android/debug.keystore

को बदलने के लिए
11

आप इस तरह से

बना सकते हैं
keytool -exportcert -alias androiddebugkey -keystore c:\Users\<your windows default user>\.android\debug.keystore | openssl sha1 -binary | openssl base64 

कुंजीस्टोर पासवर्ड दर्ज करें: एंड्रॉयड

+0

लिंक मर चुका है – larham1

+0

यहां थोड़ा बदलाव है। सबसे पहले, अगर आपका openssl.exe पाथ में नहीं है, तो आप इसे इस तरह से कॉल नहीं कर पाएंगे (जैसा कि keytool के लिए जाता है)। दूसरा, अंतिम भाग "openssl base64" है। – Asim

+0

मैकोज़: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binary | openssl base64 पासवर्ड: एंड्रॉइड –

1

मैं एक ही समस्या थी, मैं एक समाधान खोजने के लिए कुछ घंटों खर्च करते हैं, लेकिन वास्तव में फेसबुक एसडीके से ही समाधान प्रदान करता है।

DialogListener कक्षा में

मैं संशोधित onFacebookError विधि:

@Override 
public void onFacebookError(FacebookError error) { 
    Log.d("myTag",error.getmessage); 
} 

एप्लिकेशन (जो एक ही कुंजी मैं बाजार के लिए उपयोग के साथ संकेत था) निष्पादित, और LogCat पर साथ इस टैग के नीचे एक संदेश हो जाएगा सही कुंजी

हमने एक साधारण परियोजना भी बनाई है जो सभी काम करता है, और एक अलर्ट-बॉक्स और लॉगकैट पर सही कुंजी देता है। आप इसे our blog पर पा सकते हैं।

16

अपने मुख्य गतिविधि में

try { 
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", PackageManager.GET_SIGNATURES); 
for (Signature signature : info.signatures) { 
    MessageDigest md = MessageDigest.getInstance("SHA"); 
    md.update(signature.toByteArray()); 
    Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
} 
} catch (NameNotFoundException e) { 

} catch (NoSuchAlgorithmException e) { 

} 

कोशिश :-) यह एकमात्र समाधान यह एंड्रॉयड एसडीके 3.0

+1

आवश्यक शामिल है: आयात android.content.pm.PackageInfo; आयात करें android.content.pm.PackageManager; आयात करें android.content.pm.PackageManager.NameNotFoundException; आयात करें android.content.pm.Signature; आयात android.util.Base64; आयात करें android.util.Log; – Alireza

1

Keytool -exportcert -alias androiddebugkey -keystore "debug.keystore पथ" के लिए मेरे लिए काम करता है | openssl sha1 -binary | openssl बेस 64

यदि आप नहीं खुला ssl और जावा SDK के लिए सेटअप वातावरण चर से openssl के स्थान पर Keytool के स्थान पर JDK के बिन फ़ोल्डर पथ और अपने openssl पथ रख दिया और न अपने पथ

के लिए दोहरे उद्धरण चिह्नों डाल करने के लिए भूल जाते हैं

पूर्व- "सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.5.0_11 \ bin" -exportcert -alias androiddebugkey -keystore "सी: \ उपयोगकर्ता \ amin.android \ debug.keystore" | "एफ: \ openssl \ binsha1 \ openssl.exe" -बिनरी | 'एफ: \ openssl \ binsha1 \ openssl।exe "बेस 64

3
/** 
    * Generates the hash key used for Facebook console to register app. It can also be used for other sdks) Method copied from: https://developers.facebook.com/docs/android/getting-started/ 
    */ 
    public static String printHashKey(Context ctx) { 
     // Add code to print out the key hash 
     try { 
      PackageInfo info = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      } 
     } catch (NameNotFoundException e) { 
      return "SHA-1 generation: the key count not be generated: NameNotFoundException thrown"; 
     } catch (NoSuchAlgorithmException e) { 
      return "SHA-1 generation: the key count not be generated: NoSuchAlgorithmException thrown"; 
     } 

     return "SHA-1 generation: epic failed"; 
    } 
1

एक जानवर बल विकल्प बस आगे बढ़ो और अपने अनुप्रयोग से कुछ साझा करने के लिए प्रयास करें। मेरा ऐप तो कुंजी से मिलान करने की कोशिश कर रहा है के साथ एक फेसबुक पेज को प्रदर्शित करता है के लिए है। तो फिर तुम सिर्फ इस कॉपी कर सकते हैं कुंजी और फेसबुक खाते अपने डेवलपर पर अपने फेसबुक 'सेटिंग' पृष्ठ में रख दें।

आदर्श नहीं है, लेकिन एक चुटकी में यह मददगार हो सकता है।

2

जब लॉग में त्रुटि होने, जब में प्रवेश करने की कोशिश कर रहा फेसबुक, ऐसा कुछ दिखने जैसा दिखता है:

Invalid key hash. The key hash *** does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/565561836797777 

जहां "***" वह कुंजी है जिसका उपयोग करने की आवश्यकता है।

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