Bu süreci hiç anlamıyorum. Java SDK'da tuş takımını içeren klasöre gidebildim. Her ne kadar ben hata almaya devam rağmen dahili veya harici komut olarak tanınmadı. Sorun şu ki, bu işe başlasam bile, ne yapardım ve sonrasında ne yapmalıyım?
Bu süreci hiç anlamıyorum. Java SDK'da tuş takımını içeren klasöre gidebildim. Her ne kadar ben hata almaya devam rağmen dahili veya harici komut olarak tanınmadı. Sorun şu ki, bu işe başlasam bile, ne yapardım ve sonrasında ne yapmalıyım?
Yanıtlar:
Yapman gerekenler işte burada -
Kod ayıkla openSSl indirin . C: / klasöründe OpenSSL oluşturun ve çıkarılan kodu buraya kopyalayın.
debug.keystore dosya yolunu algıla. Eğer u bulamadıysanız, C: / dizininde bir arama yapın ve sonraki adımda komuttaki Yolu kullanın.
keytool.exe yolunuzu tespit edin ve bu dir / in komut istemine gidin ve bu komutu 1 satırda çalıştırın.
$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64
şifre isteyecek, hepsi bu android koymak. bir anahtar karması alacaksın
android
.
Linux ve Mac için
Açık Terminal:
Hata Ayıklama Derlemesi için
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
Sen bulacaksınız debug.keystore ".android" klasöründe. Kopyalayın ve masaüstüne yapıştırın ve yukarıdaki komutu çalıştırın.
Sürüm Derlemesi için
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
NOT: Her iki durumda da parola istediğinden emin olun. Parola istemezse, komutta bir şeylerin yanlış olduğu anlamına gelir. İçin şifre debug.keystore olan " android " ve serbest bırakılması için size bu şifreyi girmek zorunda deposu oluşturmak sırasında ayarlanır .
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>
Her şeyin yolunda olup olmadığını görmek için önce yalnız koş . Ayrıca, kanal oluşturulduğunda, tuş takımı etkileşimli olmayan moddadır ve girdiğinizde şifreyi düz metin olarak gösterir. Komutları ayrı ayrı çalıştıran küçük bir komut dosyası yazmanız daha iyi olur.
Lütfen şunu deneyin:
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);
}
}
OpenSSL: İşletim sisteminizle önceden kurulu değilse (örneğin Windows önceden kurulu değilse) yüklemeniz gerekir . Bunu nasıl kuracağınız işletim sisteminize bağlıdır (Windows için coder_For_Life22 tarafından sağlanan bağlantıyı kontrol edin ).
Etrafta dolaşmadan en kolay yolu, Windows'da iseniz, openssl.exe ikili dosyasını keytool yolunuza kopyalamaktır. Bunu yapmak istemiyorsanız, PATH
ortam değişkeninize eklemeniz gerekir . Ardından dokümanlarda verilen komutu yürütün.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
-keystore
Sonraki bağımsız değişkenin hata ayıklama anahtar deponuzu gösterdiğini unutmayın. Bu konum işletim sisteminize de bağlıdır. Aşağıdaki konumlardan birinde olmalıdır:
Her şeyi doğru yaptıysanız, bir parola girmeniz istenir. Yani android
ayıklama sertifikası için. Şifre doğruysa, konsol bir karma (biraz rastgele karakter ve sayılar) yazdırır.
Bunu alın ve android key hash
uygulamanızın tercihlerinin bulunduğu alana facebook'ta kopyalayın . Oraya ulaşmak için developers.facebook.com/apps adresine gidin , uygulamanızı seçin, gidin Edit settings
ve aşağı kaydırın. Bundan sonra, değişikliklerin geçerli olması için birkaç dakika bekleyin.
yerel bilgisayarınızda anahtar karmasını oluşturmak için Java'nın keytool yardımcı programını (konsolunuzun yolunda olması gerekir) Android hata ayıklama anahtar deposunda çalıştırın. Bu, varsayılan olarak, ana .android dizininizde bulunur). OS X'te çalıştırın:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Windows'ta şunları kullanın: -
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
umarım bu sana yardımcı olur
Ref - geliştirici facebook sitesi
Onaltılık bir harita anahtarını base64'e dönüştürmek için tarayıcı konsolunda bir satır javascript'i kullanabilirsiniz. Açık son tarayıcı (pencerelerde F12) 'de konsol ve kodu yapıştırın ve değiştirme SHA-1
, SHA-256
Google Play bu altında sağladığı altıgen haritası 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="
İşte tüm ayrıntılar (Windows için)
1. Yükleme OpenSSL'yi 3 veya sistem 32bit veya 64bit dayalı 4 (e daha iyi çalışır) ya.
2. İndirilen zip dosyasını C dizinine çıkarın
3. Çıkarılan klasörü bin'e kadar açın ve yolu kopyalayın, bunun gibi bir şey olmalıdır C:\openssl-0.9.8k_X64\bin\openssl
(sonunda add \ openssl)
4. (Nasıl yapıldığını biliyorsanız Jdk'nin bin klasörünün yolunu alın, bunu dikkate almayın).
Android studio ~ dosyasını açın ~ Proje Yapısı (ctrl + alt + shift + s), sol taraftaki panelde SDK konumunu seçin, JDK konumunu kopyalayın ve ona / bin ekleyin
Son JDK Konumu şöyle olacak: C:\Program Files\Android\Android Studio\jre\bin
benim gibi gömülü jdk kullanabileceğiniz için Jdk konumunu almak için bu yöntemi uyguluyoruz
Artık OpenSSl ve JDK konumlarınız var
5. şimdi hata ayıklama anahtar deposu konumuna ihtiyacımız var, bu açık C ~> Kullanıcılar ~> KullanıcıAdınız ~> .android için debug.keystore dosya adı olmalı, şimdi yol konumunu kopyalayın, böyle bir şey olmalı
C:\Users\Redman\.android\debug.keystore
6. şimdi komut istemini açın ve command yazın
cd YourJDKLocationFromStep4
benim durumumda
cd "C:\Program Files\Android\Android Studio\jre\bin"
7. şimdi aşağıdaki komutu oluşturun
keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
benim durumumda komut şöyle görünecek
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
şimdi komut istemine bu komutu girin, eğer doğru bir şey yaptıysanız sizden şifre istenecektir (şifre android)
Enter keystore password: android
bu, size Anahtar Karma verilecektir, sadece kopyalayın ve kullanın
İmzalı KeyHash için aşağıdaki Komutu oluşturun
keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64
anahtar deposu şifrenizi girin, yanlış şifre girerseniz yanlış KeyHash verecektir
NOT
Herhangi bir nedenle bir yolda hata veriyorsa, bu yolu çift tırnak içine alın.Ayrıca Windows güç kabuğu benim için iyi çalışmıyor, git bash kullandım (veya komut istemini kullan).
misal
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
Kısa bir çözüm de var. Bunu uygulamanızda çalıştırmanız yeterlidir:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));
FB SDK'ya ihtiyaç duymayan daha uzun bir çözüm ( buradaki bir çözüme dayanarak ):
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);
}
}
Sonuç "=" ile bitmelidir.
-AAAAAAAA_AAAAAA-AAAAAAAAAA
tarafından izin verilmediği için anahtarımı döndürdü, printHashKey anahtarı geçerli bir biçimde döndürdü+AAAAAAAA/AAAAAA+AAAAAAAAAA=
Pencereler için:
keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binary | openssl base64
Şifre girin: android -> Hit Enter
Oluşturulan Karma Anahtarı Kopyala -> Geliştirici hesabınızla Facebook'a giriş yapın
Facebook Uygulamanıza gidin -> Ayarlar -> Hash tuşunu "anahtar karmaları" seçeneğine yapıştırın -> değişiklikleri kaydedin.
Şimdi Android Uygulamanızı Facebook Giriş / Paylaşım vb. İle test edin.
API 26 beri , Facebook SDK gerek kalmadan KOTLIN aşağıdaki kodu kullanarak HASH KEYS üretebilirsiniz .
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) } }
Bu şekilde elde ettim:
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();
}
Anahtar olmadan girmeye çalıştığınızda, bir istisna oluşacaktır. Facebook SAĞ tuşunu bu istisnayı içine aldı. Tek yapmanız gereken kopyalamak.
Uygulamayı Play Store'a zaten yüklediyseniz Hash Key'i aşağıdaki gibi oluşturabilirsiniz:
1) Sürüm Yönetimine buradan gidin
2) Sürüm Yönetimi -> Uygulama İmzalama'yı seçin
3) SHA1 anahtarını onaltılık formatta Uygulama imzalama sertifikasında görebilirsiniz.
4) SHA1'i onaltılı biçimde kopyalayın ve base64 formatına dönüştürün, bu bağlantıyı SHA1: hex'in bir parçası olmadan yapabilirsiniz.
5) Facebook geliştirici konsoluna gidin ve anahtarı - (temel 64'e dönüştürdükten sonra) ayarlara ekleyin -> temel -> anahtar karmaları.
Ardından path sistem değişkenlerine openssl \ bin ekleyin:
Bilgisayarım -> özellikler -> Gelişmiş yapılandırmalar -> Gelişmiş -> Sistem değişkenleri -> sistem değişkenleri altında yolu bul ve bunu sonuna ekle:; yourFullOpenSSLDir \ bin
Şimdi jdk \ bin klasörünüzde bir komut satırı açın C: \ Program Files \ Java \ jdk1.8.0_40 \ bin (Windows'ta shift tuşunu basılı tutup sağ tıklayın -> burada komut satırını aç) ve şunu kullanın:
keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64
Ve parolayı verdikten sonra oluşturduğu 28 uzunluk numarasını kopyalayın.
Bunlardan birini uygulamanızda çalıştırın:
FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");
Veya bu:
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);
}
}
Ve sonra günlüklere bakın.
Sonuç "=" ile bitmelidir.
KOLAY YOL -> Açmayın openssl -> GIT BASH KULLANIN!
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Varsayılan şifre "android"
Çoğumuz Git Bash kurduk, bu benim en sevdiğim yol.
bu yeni başlayanlara da yardımcı olacaktır.
@ coder_For_Life22'nin cevabına daha fazla ayrıntı ekleyerek.
eğer bu cevap yardımcı olursa, oy vermeyi unutma. bizi motive ediyor.
bunun için uygulamanın anahtar deposu dosyasının yolunu ve
bu örnek için parolayı zaten bilmeniz gerekir , anahtarın "c: \ keystorekey \ new.jks" adresinde saklandığını düşünün
1. bu sayfayı açın https://code.google.com/archive / p / windows için windows / indirmeler
2. Windows işletim sisteminize göre 32 veya 64 bit zip dosyası indirin.
3. indirilen dosyayı istediğiniz yere çıkarın ve yolu hatırlayın.
4. Bu örnek için indirme klasöründeki klasörü çıkardığınızı düşünüyoruz.
bu nedenle dosya adresi "C: \ Users \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe" olacaktır;
5. şimdi klavyede windows + r düğmesine basın.
6. Bu çalışma kutusunu açacaktır.
7. cmd yazın ve Ctrl + Shift + Enter tuşlarına basın .
8. Bu komut istemini yönetici olarak açar.
9. burada java'nın bin klasörüne gidin:
Android Studio tarafından sağlanan jre'yi kullanıyorsanız, yolu aşağıdaki gibi bulacaksınız:
a. açık android stüdyosu.
b. dosya-> proje yapısı
c. sol bölmede "SDK konumu" nu tıklayın
d. sağ bölmede, 'JDK konumu'nun altında jre yolunuz bulunur.
e. Bu yolun sonuna "keytool.exe" dosyası olarak "\ bin" ekleyin, ihtiyacımız olan bu klasörün içinde.
düşündüğüm bu örnek için,
"C: \ Program Files \ Java \ jre-10.0.2 \ bin"
32bit java yüklediyseniz
"C: \ Program Files (x86) \ Java \ jre-10.0.2 \ bin"
10 içinde olacaktır. yukarıdaki yollarla komutu aşağıdaki gibi çalıştırın:
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
hatalar: şunu alırsanız:
---
'keytool' dahili veya harici komut olarak tanınmaz
---
bu java'nın başka bir yere kurulduğu anlamına gelir.
adım 1-> C: \ Program Dosyaları \ Java \ jdk1.6.0_43 \ bin>
Adım 2-> keytool -list -v -keystore C: \ Kullanıcılar \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android
u var SHA1 değeri bu bağlantıyı tıklayın u dönüştürmek ur SHA1 değeri HASH ANAHTAR
im% 100 emin bu bağlantı size yardımcı olacaktır
Kolay yol
Bu web sitesini kullanarak SHA1 anahtarını Facebook için Hash Key'e dönüştürerek Hash Key'i edinebilirsiniz.
Tüm parmak izlerinizi https://console.developers.google.com/projectselector/apis/credentials adresinden alabilirsiniz
Ve bu Kotlin kodunu keyhash'e dönüştürmek için kullanın:
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) }
}
https://developers.facebook.com/docs/android/getting-started/
4.19.0 - 25 Ocak 2017
Facebook SDK'sı
Değiştirilmiş
Facebook SDK artık uygulama başladığında otomatik olarak başlatılıyor. Çoğu durumda artık bir FacebookSDK.sdkInitialize () çağrısına gerek yoktur. Daha fazla ayrıntı için yükseltme kılavuzuna bakın.
Hata Ayıklama için
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();
}
Sadece bu kodu çalıştırmak için de OnCreateView Veya OnStart actvity ve bu İşlevini İade Eğer Kalkınma Anahtar Karması .
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";
}
Aynı sorunu yaşıyordum, bir şifre istenmiyordu ve anahtar deposu dosyası için yanlış bir yol vardı gibi görünüyor.
Aslında, keytool ayarladığınız anahtar deposunu bulamazsa, bir tane oluşturacak ve doğru anahtarı kullanmadığı için size yanlış anahtar verecektir.
Genel kural, sizden şifre istenmezse, yanlış anahtar üretilir.
Bu apk'yi kullanabilirsiniz
1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
Bu yanıtı dene
https://stackoverflow.com/a/54513168/9236994
asgari çabayla sorunu çözmeye yardımcı olur.
keytool -exportcert -alias androiddebugkey -keystore "C: \ Kullanıcılar ** Deepak **. android \ debug.keystore" | " C: \ Kullanıcılar \ Deepak \ ssl \ bin \ openssl" sha1 -binary | " C: \ Kullanıcılar \ Deepak \ ssl \ bin \ openssl" base64
2 Yukarıdaki komuttaki değişiklikler 1.Deepak === Sisteminiz tarafından değiştirin KULLANICI ADI 2.C: \ Users \ Deepak \ ssl === Açık SSL yolunuzu değiştirin
bu komutu çalıştır ve böyle çıktı al
C: \ Kullanıcılar \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Kullanıcılar \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C: \ Kullanıcılar \ Deepak \ ssl \ bin \ openssl" base64 Anahtar deposu şifresini girin: ****** ga0RGNY ****************** =
Birinin openssl ile ilgili sorunu varsa, bu talimatları izleyin:
Bu kadar
https://sourceforge.net/projects/openssl/files/latest/download