Geçersiz anahtar karması ile Android Facebook entegrasyonu


194

Uygulamalarımdan birinde Facebook'tan veri almam gerekiyor ... Bunu yapıyorum:

Uygulama kimliği oluşturdum . Başarılı bir şekilde oturum açar, ancak oturumu kapattıktan sonra oturum açarım ve sonra bana verir:

Geçersiz anahtar karma hatasının Facebook ekran görüntüsü

Ne yapıyorum yanlış? Facebook SDK kullanıyorum ... Facebook'u telefonuma yükledim ... Bir emülatörde iyi çalışıyor, ancak dahili Facebook uygulaması yüklü değil.

Bu benim kodum:

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
ama oturum bittikten sonra giriş yapıyorsam çalışmıyor ilk kez ligin için iyi çalışır
Android

1
evet ben .. deneyin try {PackageInfo info = getPackageManager (). getPackageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (İmza imzası: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android

1
Bu sorunu burada çözdüm! İşte harika anlaşıldı! [ Stackoverflow.com/questions/5306009/… ] [1]
Madi

3
@Android Bu eski olmasına rağmen, bundan bahsetmeliyim. Bir kullanıcı oturumu kapatıp oturum açtığında bu gerçekleşmez. Bu, ikinci kez hata ayıklama yani uygulamayı hata ayıklama sırasında yeniden yüklediğinizde olur. Böylece karma değişir. İmzalı uygulama (üretime hazır) durumunda bu gerçekleşmez
Nilay Vishwakarma

1
Facebook Uygulamasını kaldırırsanız aynı hatayı mı alıyorsunuz? İki telefondan test ettim ve bu hata sadece Facebook Uygulaması yüklendiğinde oluşur.
Jaime Montoya

Yanıtlar:


274

Oluşturulan karma anahtarı yanlış. Karma anahtarını iki adımda alabilirsiniz.

Biri bir komut istemi ile. Bir diğeri kodlama yoluyla. Komut istemi aracılığıyla hash tuşu yalnızca ilk defa çalışıyor. Sebebini bilmiyorum. Aynı problemi de yaşadım. Bu yüzden program aracılığıyla denedim.

Bu adımları takip et:

Aşağıdaki kodu içine yapıştırın 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) {
}

Yukarıdaki kodlamada "com.example.packagename" ifadesini paket kodunuzla değiştirmeden değiştirin (paket adınızı Android bildirim dosyasında bulabilirsiniz).

Uygulamanızı çalıştırın. Yukarıdaki kodu yapıştırdığınız etkinliğe gidin. LogCat dosyasında "KeyHash" arayın. Bir anahtar karması bulabilirsiniz. Anahtar karmasını kopyalayın ve Facebook uygulaması kontrol paneli sayfasına gidin. Ayarlara gidin ve aşağıdaki görüntüdeki gibi ayrıntıları girin.

Resim açıklamasını buraya girin

Yukarıdaki adımı tamamladıktan sonra uygulamayı tekrar başlatın. Artık Facebook'a giriş yapabilirsiniz. Anahtar karması hakkında daha fazla bilgi için bağlantıyı kontrol edin .

Ayarlar sayfasına yanlış bilgi eklerseniz bunun bir miktar hata vereceği anlamına gelir. Bu yüzden orada doğru bilgileri kullanın. Ayrıca, herkesin (sizden başka) başvurunuzu kullanması gerekiyorsa, izni etkinleştirmeniz gerektiği anlamına gelir (ayarın yanındaki "Durum ve İnceleme" bölümünde "evet" i değiştirin) .


20
Bu şekilde, büyük olasılıkla hata ayıklama anahtar deposu için bir anahtar karma var. Geliştirme modunda sizin için çalışır, üretim modunuz için gerekli değildir. En azından üretim uygulamam için çalışmıyor.
Liangjun

3
teşekkürler zamanımı çok kurtardın ... facebook resmi doktor saçmalık
okumamalı

Çok teşekkür ederim ahbap!
KinGPinG

Hey bu koda göre PackageInfo info = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); for (İmza imzası: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); farklı bir hash anahtarı pencerelerde cmd komutunu çalıştırırken gönderilirken hash anahtarım farklıydı ve FB'de ekledim ama yine de günlük programlı kodun karmasını gösteriyor
Sagar Devanga

1
Beni çok kurtardı. Hala en iyisi. Anahtarlığa ilişkin ayrıntılı bilgileri kontrol edin ve kopyalayıp facebook geliştiricileri sayfasına yapıştırın. Elle yazarken hata yapmayın! Ayrıca, uygulamayı her kaldırdığınızda ve yüklediğinizde keyhash'in değiştiğini anlayın.
sanjeev

190

Google Play Uygulaması imzalamayı kullanıyorsanız:

Google Play Konsolu'nda Uygulama imzalama bölümünü açın ve Uygulama imzalama sertifikası altında SHA-1 karma değerini edinin . Sonra Base64'e dönüştürün , örneğin bu araçla: Onaltılık -> base64 dize kod çözücü

Konsol ekran görüntüsü

Base64 ekran görüntüsüne dönüştür


14
Bayım! Sen bir hayat kurtarıcısın! Kucak dolusu sevgiler. Yerel sürüm anahtarlarımdaki karmaları facebook konsoluna yerleştirirken Play Store'un imzasını kullanıyordum.
Taha Rushain

4
Hayatımı kurtarıyorsun, tepki veriyorum, oyun mağazası uygulaması imzalama hakkında kimse belirtilmiyor
TomSawyer

7
Teşekkür ederim! İşe yarıyor! Bunun için terminal komutunu da kullanabilirsiniz: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Yuriy Seredyuk

4
Üretim ortamı için yapılması gerekenler budur !!! Başparmak havaya!
Bikey

Tam olarak bilmek istediklerim. Uygulamayı her kaldırdığınızda ve yüklediğinizde hata ayıklamadaki Hashkey değişiklikleri. İmzalı apk için bu en iyi çözümdür! Ppl hayatı kolaylaştırır teşekkürler!
sanjeev

124

Bu sorunla karşı karşıyaysanız, bu anahtarı developer.facebook.com adresine koyun :

Resim açıklamasını buraya girin

Ardından uygulamanızın developer.facebook.com adresinde yayınlandığından emin olun .

Bu yeşil daire uygulamanın canlı olduğunu gösteriyor:

Resim açıklamasını buraya girin

Yoksa, uygulamanızı canlı hale getirmek için şu iki adımı izleyin:

Adım 1 Uygulamanıza gidin → ayarKişi E-postası ekleyin ve Değişiklikleri Kaydet'i uygulayın.

Adım 2 Git App İnceleme seçeneği ve bu geçiş emin olun Evet . Bir ekran görüntüsü ekledim:

Resim açıklamasını buraya girin

Not: Eğer hashkey kopyalamak istiyorsanız, içinde BlueServiceQueue kontrol LogCat .


5
Bu karmayı telefondan kopyalamanın kolay bir yolu var mı?
Daniel Shatz

4
@DanielShatz logcat içinde görünür. Sadece mektup mektubu kopyaladıktan sonra öğrendim.
Alaa M.

4
@DanielShatz Logcat BlueServiceQueueiçinde etiket arayın
Alaa M.

4
Bu cevap benim için çalıştı. Karma yazmayı deneyen bazı girişimlerden sonra bana aynı hatayı verdi. Bunun farkına varmak için biraz zamanımı aldı.
Markus

1
Bu çalışıyor ama FB bu karma anahtar nereden merak ediyorum? Kimse merak etmiyor mu? Hata iyi çalışan karma anahtarını görüntülemekti, ancak tüm komutlarda bile veya google uygulama imzalamasından
sha64'e

82

Ben de aynı problemi yaşadım. Çok küçük bir hata nedeniyle olduğundan emindim ve evet oldu!

Çözümü buldum:

Oluştururken ayıklama bilgisayarımda karma anahtarı, benim sistemin şifre girmiş. Ancak şifre aşağıdaki gibi olmalıdır -

Anahtar deposu şifresini girin: "android". Benim durumumdaki tek sorun buydu.

----- Debug anahtar karmasını oluşturmak için bu komutu kullanın -

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

Anahtar deposu şifresini girin: 'android'

----- Sürüm anahtarı karması oluşturmak için bu komutu kullanın -

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

Bu komutu uyguladıktan sonra anahtar deposu şifrenizi girin.


5
şifre olarak "android" kullanmak benim için çalışıyor. bu kafa karıştırıcı.
adbie

3
karma anahtarı oluştururken şifre olarak bu "android" kullanın.
Akash Bisariya

2
windows makinesinde path değişkeninin openssl \ bin ve java .. \ bin klasörleri için uygun şekilde ayarlandığından emin olun. Ayrıca, facebook komutlarını kullanabilmek için HOMEPATH değişkenini ayarlayın.
KawaiKx

1
En azından mac üzerinde bu işe almak için Java JDK yüklemek zorunda kaldı. Aksi takdirde yukarıdaki hata ayıklama komutu yine de bir karma oluşturur, ancak karma çalışmaz ve sizden şifre istenmez. JDK kurulu olduğunda bu bir cazibe gibi çalıştı.
lejonl

1
bu cevap DOĞRU CEVAP olmalıdır
Evan Ngo

20

Aynı sorunu yaşadım. Bu garip davranışın olası nedenleri hakkında kısa bir araştırma yaptım ve aşağıdakileri buldum:

  • Yeni bir Facebook uygulamasının ilk yürütülmesi sırasında, herhangi bir anahtar karması belirtmeseniz bile bağlantı / oturum açmaya izin verir .

  • Benim için, Facebook'un sağladığı öğretici doğru anahtar karmasını üretmedi, çünkü yanlış yapılandırmayı veriyordu . Yürütürken:

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

tüm özellikleri kontrol ettiğinizden emin olun - HOMEPATHanahtar deposunun varlığı, vb. Belki de parola sağlamanız gerekir.

  • Doğru yapılandırmayı üreten şey @Mendendran tarafından önerilen çözümdü .

  • Ayrıca, başlangıçta gönderilen hatayı görürseniz ( http://i.stack.imgur.com/58q3v.png ), büyük olasılıkla ekranda gördüğünüz anahtar karmaşası gerçek olanınızdır. Başka bir şey işe yaramazsa, Facebook'a girmeyi deneyin.

Tüm bu sonuçları aldım: Windows 7 64 bit sürümü, Android Studio 1.2.2, JDK 7.


2
linux sürümü: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -binary | openssl base64`
ruX

1
Sadece cihaz ekranında facebook tarafından gösterilenleri girin, bu çalışması gerekir. @Martin
ralphgabb

14

Android için Facebook Login'e göre , anahtar karma değerini sağlamalısınız. Bunu elde etmek için başvurunuzu imzalamak için kullanılan anahtara ihtiyacınız olacaktır .

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

1
sadece yorum eklemek istiyorum, üretim anahtar deponuzu kullanın.
Liangjun

2
@Liangjun Aslında tüm anahtarlarınızı kullanmalısınız çünkü aksi halde hata ayıklama ortamında Facbeook Login'i test edemezsiniz.
Pijusn

2
@Pius, evet, aslında her iki anahtarı da kullanıyorum. Bunu açıkça belirtmeliydim.
Liangjun

Bu komut için bir hata alıyorum (Java çalışma zamanı var, yükleme isteğinde bulunuyor.) Ama yine de bir anahtar alıyorum, ancak geçersiz ve sadece bana tanınan söyleyen logcat bir kopya yapıştırın.
Cristi Băluță

8

Biri Hata Ayıklama ve diğeri Sürüm için olmak üzere iki anahtar karma oluşturmalısınız.

İçin hata ayıklama anahtarı karma:

OS X'te çalıştırın:

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

Windows'da şunu çalıştırın:

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

Anahtar karmaları kaynağında hata ayıklama

İçin Yayın anahtar karma:

OS X'te çalıştırın (aralarınızdakileri <>değerlerinizle değiştirin) :

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

Windows'da şunu kullanın (aralarındaki <>değerleri değerlerinizle değiştirin) :

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

Anahtar karmaları kaynağını serbest bırak


Bu komut için bir hata alıyorum (Java çalışma zamanı var, yükleme isteğinde bulunuyor.) Ama yine de bir anahtar alıyorum, ancak geçersiz ve çalışmasını sağlamak için sadece
logcat'den

Belki java ve keytool'unuzun PATH komutunu komut satırında ayarlamamış olabilirsiniz? @ CristiBăluță
MBH

7

Önceki tüm cevapları denedim ve hiçbir şey müşterilerime davam yardımcı oldu!

Sonra müvekkilim cihazında Facebook Uygulaması yüklü olduğunu hatırladı. Çıkardıktan sonra. giriş mükemmel çalıştı.

Karma anahtarı değiştirilmişti ve Facebook Developers Console'daki eski karma anahtarları hatadan (yukarıda önerildiği gibi) anahtarla değiştirdim ve işe yarıyor!

Facebook Uygulaması'nın kendisi sorun olabilir, bu yüzden bunu Facebook uygulaması yüklü bir cihazda ve Facebook uygulaması yüklü olmayan bir cihazda bulup her iki durumu da ele almanız daha iyi ...


Evet aynı burada facebook uygulaması cihaza yükledikten sonra bu hatayı aldım. Bu yüzden şu anda Facebook dev ayarlarına 2 karma anahtarı koydum.
stuckedoverflow

3
Seninkine çok benzer bir durum var. Bana yardımcı olan şey FB sayfanıza - Ayarlar - Uygulamalar - Uygulamayı listeden kaldırın. Karma anahtarını değiştirin ve fb uygulamasını ve uygulamanızı yeniden yükleyin. Ve şimdi çalışıyor ...
anna_manzhula

4

Bu sorunu şu şekilde çözdüm:

Önce SHA-1 değerini almalısınız. Bunun için iki yol var.

Android Studio'da SHA-1 değerini almak için.

  1. Gradle'ı tıklayın
  2. İmzalama Raporu'nu tıklayın
  3. SHA-1 değerini kopyalayın

VEYA

Anahtar deposu dosyasından SHA-1 değerini almak için .

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

SHA-1 değerini panonuza şu şekilde kopyalayın :

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

Ve SHA-1 değerinizi Base64'e dönüştürmek için Onaltılık -> Base64 dize dekoderini açın.

Facebook bunu gerektirir.

Oluşturulan karmayı alın "******************** =" ve anahtar karmasını Facebook uygulamasına kopyalayın.


3

Aynı sorunu yaşıyordum. İlk giriş yapın, sadece iyi, ama sonra geçersiz bir anahtar karması.

Unity için Facebook SDK'sı yanlış anahtar karmasını alır. Anahtarı "C: \ Kullanıcılar \" kullanıcı ".android \ debug.keystore" den alır ve mükemmel bir dünyada, projenizde oluşturduğunuz anahtar deposundan almalıdır. Bu yüzden anahtar karmasının kayıtlı olmadığını söylüyor.

Madi'nin önerdiği gibi , doğru anahtarı bulmak için bu bağlantıdaki adımları takip edebilirsiniz . Bunları projenizdeki anahtar deposuna yönlendirdiğinizden emin olun. Aksi takdirde doğru anahtarı alamazsınız.


3

Aşağıdaki kod, Facebook için karma değerini verecektir, ancak sürüm adayı karma değerini almak için bu adımları izlemeniz gerekir.

  1. Bu kodu kopyalayıp ana etkinliğinize yapıştırın

    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. İmzalı bir APK dosyası oluşturun .

  3. Telefonunuzu bir dizüstü bilgisayara bağlayın ve bağlı olduğundan emin olun.
  4. Sürüm APK'sını telefonunuza manuel olarak taşıyarak APK dosyasını telefonunuza yükleyin ve çalıştırın.
  5. Şimdi Android LogCat'e bakın ( KeyHash filtresini kullanın :) . Facebook için sürüm karma anahtarınızı görmelisiniz. Sadece kopyalayıp bilgisayarınıza yapıştırın https://developers.facebook.com/apps. Ayarlar altında.
  6. Şimdi mükemmel çalışması gerekir uygulamasını test edebilirsiniz.

kodun yalnızca imzalı apk oluşturduğunuzda işe yaradığını unutmayın. Aksi takdirde sadece yayınlanan apk için işe yaramaz olan hata ayıklama apk karma verecektir
abdul jalil

Merhaba, facebook uygulamasına oluşturulan hashkey verdiğimde iyi çalışıyor ama başka bir cihazda çalıştırmayı denediğimde tekrar 'INVALID HASH KEY' gösteriliyor.
Deepak

2

Uzun bir araştırmadan sonra bir çözüm bulduk.

İzinleri şu şekilde ayarlamıştık:

loginButton.setReadPermissions(public_profile email);

Bu ilk kez çalıştı, ancak Facebook'a tekrar giriş yaptığımızda Geçersiz Karma Hatası verdi .

Basit çözüm, yukarıdaki satırı şu şekilde değiştirmekti:

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

Ve mutluluk gibi çalıştı!

Facebook, yanıltıcı geçersiz karma anahtar hatası yerine doğru istisnayı döndürmelidir.


Ben de aynı sorunu var.Çözümünü denedim ama hala sorunumu çözemiyorum @ user3663906
BekaKK

2

Birçok denemeden sonra buna bir çözüm buldum. Hem geliştirici hem de hata ayıklama anahtarlarını Facebook geliştirici konsoluna ekledim ve hala hatayı aldım.

Benim için çalışan tek çözüm OpenSSL programını Google'dan kaldırmak ve Windows için Win32 / Win64 OpenSSL Installer'dan indirmekti

Gerçekten sihir gibi çalışır.


2

Bu soru yardımcı şekillerde bir sürü içinde yanıtlandı rağmen ben sadece ben (Google'da karma tuşları Konsolu oyna kullanarak) Rafal Maleks cevabı takip zaman eklemek istedim DEĞİL Uygulama İmzalama SHA1 anahtarı kullanabilmek için, hala jenerik var Facebook hatası. Bunun yerine SHA-1 sertifikası parmak izini Sertifika Yükle kısmından (Google Play Konsolundaki Uygulama İmzalama bölümünün hemen altında) kullanmam gerekiyordu. Aksi takdirde aynı işlem;

  1. SHA-1 sertifikası parmak izini Google Play Konsolundaki Sertifika Yükle bölümünden kopyalayın

  2. SHA-1'i kullanarak http://tomeko.net/online_tools/hex_to_base64.php dosyasını dönüştürün ve çıktıyı kopyalayın (base64)

  3. Developer.facebook.com adresindeki Anahtar Karması girdisine yapıştırın ve değişiklikleri kaydedin.

Umarım bu cevap gereksiz değildir ve App Signing sertifikasıyla çalışamayan birine yardımcı olacaktır.

Şimdi Facebook girişi hem hata ayıklama hem de serbest bırakma modunda uygulamamda çalışıyor.


1

Aşağıdaki kodu OnCreate yönteminize yapıştırın:

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();
}

Paket adını değiştirmeniz yeterlidir. Ardından LogCat dosyanıza gidin ve Burada hata ayıkla'yı seçin. Sonra karma anahtarını bulacaksınız. Şimdi bu karma anahtarını kopyalayın ve developer.facebook.app_id sitesine gidin, karma anahtarınızı düzenleyin ve tuşuna basın Save. Şimdi Android projenizi tekrar çalıştırın. Bence sorun çözülecek.


7
diğer adamı tekrar
Beto Caldas

1

Bu, aynı sorunu olan birine yardımcı olabilir.

  1. Aşağıdaki kodu kullanarak anahtar karmasını oluşturun

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

    Keytool nasıl kullanılır

  2. Facebook geliştiricisinde zorunlu alana yapıştırın

  3. Android Studio'da DosyaProje Yapısı menüsü

    Resim açıklamasını buraya girin

    İmza parametreleri ekleyin.

  4. Lezzetleri seçin

    Resim açıklamasını buraya girin

    Oluşturduğumuz imzalama yapılandırmasını seçin.

  5. Derleme türünü seçin

    Resim açıklamasını buraya girin

  6. Yapı varyantını seçin ve oluşturun

    Resim açıklamasını buraya girin


1

Uygulamamda hata ayıklarken de aynı sorunu yaşadım. Ekli görüntüde (Facebook'un söylediği) çaprazladığınız karma değerini yeniden yazdım ve Facebook'un geliştirici konsoluna anahtar karmalarına ekledim. Yazım hatalarına dikkat edin.

Bu çözüm, uygun bir çözümden ziyade kolay bir çözüm gibidir.


1

Tuş takımını manuel olarak yazıyorsanız (örneğin mobil cihazdan Facebook Panosuna), küçük L ve büyük harf I arasında ayrım yaptığınızdan emin olun.


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'un kullandığı hata ayıklama için varsayılan şifre ve diğer ad değildir. Aşağıdaki değiştirmek gerekir ve işe yarayacak.

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

Varsayılan şifre ile hiçbir şey değiştirmediyseniz, "android" olmalıdır .

Ayrıca build.gradle dosyasında da yapılandırabilirsiniz. Ancak, karma oluşturmak için aynı takma parola kullanılmalıdır:

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

0

İşte birçok doğru cevap. Sadece bir şey:

Alınan karmayı hızlı başlangıç ​​eğitimi ile değil UygulamaAyarlarAna ekranına yapıştırın .


0

Ben de aynı problemi yaşadım.

APK dosyasını, Facebook geliştiricileri bölümünde depolanan hashkey anahtarını oluşturan aynı cihazla oluşturduğunuzdan emin olun.


0

Bunu aşağıdakilere ekleyerek düzelttim 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");
}

Daha sonra bunu Google geliştirici konsoluna yükledim ve ne olursa olsun tamamen farklı bir anahtar karmasına sahip olan türetilmiş APK'yı indirdim.

Daha sonra yeni anahtar karmasını belirlemek için LogCat'i kullandım ve diğer kullanıcıların belirttiği gibi Facebook'u ekledim.


0

Sürüm anahtarı karmaları oluşturuyorsanız, anahtar deponuzun gerçek şifresini girdiğinizden emin olun, "android" değil .

Bu benim sorunumdu. Hata ayıklama sürümü çalışıyor, ancak sürüm APK çalışmıyor.


-1

Etkinliğinizin onCreate () yönteminde aşağıdaki kodu kullanın:

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) {
}

Bu kodu çalıştırın. Bu, karma anahtarını oluşturur. Bu KeyHash'ı Facebook uygulama ayarına kopyalayın ve değişiklikleri kaydedin. Ardından uygulamanızda oturum açın. Bu gelecekte de mükemmel bir şekilde çalışacaktır.


3
diğer adamı tekrar
Beto Caldas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.