Facebook gönderme özelliğini entegre etmek istediğim bir Android uygulaması üzerinde çalışıyorum. Facebook-Android SDK'sını indirdim ve Android için anahtar karmasını oluşturduğu belirtilen readme.md (metin dosyası) var. Nasıl üretebilirim?
Facebook gönderme özelliğini entegre etmek istediğim bir Android uygulaması üzerinde çalışıyorum. Facebook-Android SDK'sını indirdim ve Android için anahtar karmasını oluşturduğu belirtilen readme.md (metin dosyası) var. Nasıl üretebilirim?
Yanıtlar:
İşte adımlar-
Google kodundan openssl'i indirin (64 bit makineniz varsa , en son sürümü değil openssl-0.9.8e X64'ü indirmeniz gerekir )
Çıkarın. 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
Daha fazla bilgi için burayı ziyaret edin
$
.
[EDIT 2020] -> Şimdi burada cevabı tamamen tavsiye ediyorum , android studio kullanarak daha kolay, daha hızlı ve herhangi bir kod yazmaya gerek yok - aşağıda biri tutulma günlerinde :) -.
Bu kodu herhangi bir etkinlikte kullanabilirsiniz. Hata ayıklama anahtarı olan logcat'e hashkey'i kaydeder. Bu kolaydır ve SSL kullanmaktan daha rahattır.
PackageInfo info;
try {
info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
//String something = new String(Base64.encodeBytes(md.digest()));
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
Kodu bildikten sonra kodu silebilirsiniz;)
keytool
Komutu kullanarak yanlış anahtar karmaları alıyordum (neden olduğu hakkında hiçbir fikrim yok, araştırmak için yeterince umursamadım). Bu çalıştı ve tam anlamıyla hata ayıklama almak ve anahtar karmaları serbest bırakmak için 5 dakika sürdü. +1
Windows ve Mac OS X için küçük bir araç oluşturdum. Sadece anahtar deposu dosyasını atın ve karma anahtarını alın.
Varsayılan debug.keystore dosyasını istiyorsanız, varsayılan diğer adı ve şifreyi kullanın. Aksi takdirde, kendi anahtar deposu dosyanızı ve değerlerinizi kullanın.
Bir göz atın , Windows sürümünü indirin veya Mac OS X sürümünü indirin (Dev-Host bazen kapalı olabilir ... bu yüzden bağlantı koparsa, PM ve ben düzeltirim).
Umarım bu size yardımcı olur ...
31 Aralık 2014 - EDIT: Ana makine AFH olarak değiştirildi. Bağlantıların kopup kopmadığını lütfen bana bildirin
21 Kasım 2013 - DÜZENLE:
Kullanıcıların istediği gibi, varsayılan bir anahtar deposu konumu ve bir BAĞIŞ düğmesi ekledim. Size yardımcı olduysam kullanmaktan çekinmeyin . :)
keytool
komut satırını kullanmaya kıyasla neden farklı SHA anahtarı veriyor ? Aynı anahtar deposu dosyasına uygulandığında özdeş sonuçlar üretmesi gerekmez mi?
Şu anda Facebook'un Android Eğiticisindeki talimatlar Windows altında iyi çalışmıyor . Örnekleri, keytool çıkışının openssl'ye nasıl bağlanacağını gösterir, ancak bunu Windows altında denerseniz, çıkış bazı nedenlerden dolayı geçerli değildir. Düzgün çalışması için ara dosyaları kullanmak zorunda olduğumu fark ettim. İşte benim için işe yarayan adımlar:
Google'dan Windows için openssl'yi indirerek başlayın .
C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin
C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin
C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt
Bu komutları çalıştırdıktan sonra geçerli karma base64.txt dosyasında saklanır. Bunu kopyalayıp Facebook'taki uygulama ayarlarınıza yapıştırın.
Facebook'un resmi sayfasında verilen şey :
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Bu komutu parçalara ayırmama izin verin.
Bakın "keytool.exe"
. Bunu C: sürücüsünde arayabilirsiniz. Bunu bulabilirsiniz "java jdk"
veya "java jre"
. Birden çok sürüm yüklediyseniz, birini seçin.
Bir CMD istemi açın ve bulduğunuz yukarıdaki dizine gidin "keytool.exe"
.
"Exe`" klibi ve Facebook sayfasında sağlanan yukarıdaki komutu yapıştırın.
Bunu girerken, OpenSSL'nin giriş çıkış komutunda tanınmadığına dair bir hata alırsınız. Çözüm: OpenSSL'den " openssl " dosyasını indirin (64 bit makineniz varsa openssl-0.9.8e X64'ü indirmeniz gerekir ). Ayıklayın ve istediğiniz yere kaydedin ... OpenSSl
Klasördeki C: sürücüsüne kaydettim
Yukarıdaki komutta, OpenSSL hatası aldığınız yukarıdaki komutta, "|" kanalından sonraki her iki yerde de "C: \ OpenSSL \ bin \ openssl" ile değiştirin.
Şifre istenirse girin android
.
Ve hash anahtarını alacaksın. Diğer adımlar için tekrar Facebook sayfasına bakınız.
Bu kodu onCreate
etkinliğinize ekleyin, logCat'inizdeki KeyHash etiketi altındaki karmayı yazdıracaktır
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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
Hesabınız için birden fazla hashkey ekleyebilirsiniz, bu nedenle hata ayıklamada çalışıyorsanız bunu yayın modunda tekrar çalıştırmayı unutmayın .
Android anahtar karma kodunu almak için şu adımları izleyin:
cd C:\Program Files\Java\jdk1.6.0_26\bin
keytool -export -alias myAlias -keystore C:\Users\
kullanıcı adınızı yazın\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
myKeyStore
serbest bırakma anahtarınızın yolunu belirtin . Yukarıdaki kod hata ayıklama anahtarı içindir
Bulduğum en basit çözüm şudur:
Günlükte şuna benzeyen satırı arayın:
04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch.
Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
application settings. Check your application settings at
http://www.facebook.com/developers
"AbcdefgHIJKLMN + OPqrstuvwzyz" dosyasını kopyalayın ve Facebook Android Anahtar Karma alanına yapıştırın.
KeyHash: XWwXXXXX/5xxxxxxxxxxx=
günlüğünde görüyorum ve bana yardım ettim!
SHA-1 anahtarından anahtar karmasını alabilirsiniz. Bu çok basit SHA-1 (İmzalı APK) anahtarını Play Store'dan kontrol et.
Şimdi bu SHA-1 anahtarını kopyalayın ve bu web sitesinde geçirin http://tomeko.net ayrıca Anahtar Karma'nızı almak için aşağıdaki görüntüyü kontrol edin.
Bu şekilde Linux işletim sistemi ve Windows işletim sistemi için yaptım :
keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64
Lütfen takma adı ve anahtar deposunu yolu ile gereği olarak değiştirin.
Terminal ediyorum sormak için Şifre anahtar deposunun. Yapmak zorunda şifre sağlamak için aynı anahtar deposu .
Sonunda Release Hashkey'i alacaksınız .
Sürüm Hashkey için Adımlar :
keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64
Lütfen takma adı ve anahtar deposunu yolu ile gereği olarak değiştirin.
Terminal ediyorum sormak için Şifre anahtar deposunun. Yapmak zorunda şifre sağlamak için aynı anahtar deposu .
Sonunda Release Hashkey'i alacaksınız .
Bitti
Windows için openSSL'i indirmek için 64bit ve 32bit'i burada bulabilirsiniz
indirilen dosyayı ayıkla
C: \ Users \ kullanıcı adı \ .android \ debug.keystore
keytool -exportcert -alias androiddebugkey -keystore C: \ Kullanıcılar \ kullanıcıadı.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 - ikili | "C: \ openSSL \ bin \ openssl" base64
android
24 basamaklı bir karma a
verir ve yazmak 28 basamaklı bir karma verir. Neden olduğu hakkında bir fikrim yok!
Android Sitesi'nde açıklanan prosedür gibi android için imzalı uygulamalar için keytool tarafından bir anahtar deposu oluşturmanız gerekir ve daha sonra cygwin'i yüklemeniz gerekir ve daha sonra google kodundan openssl'yi yüklemeniz ve ardından aşağıdaki komutu yürütmeniz gerekir. android için anahtar ve daha sonra bu karma anahtarı oluşturduğunuz facebook uygulamasına koyun. Ve sonra duvar uygulaması ("publish_stream") için Android Uygulaması üzerinden facebook uygulamasına erişebilirsiniz bir örnek olabilir.
$ keytool -exportcert -alias takma_adı -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64
Yukarıdaki komutu cygwin'den yürütmeniz gerekiyor.
OpenSSL'i indir -> Yükle -> genellikle C: \ OpenSSL'ye yüklenir
sonra cmd'yi açın ve yazın
cd../../Program Files (Enter)
java (Enter)
dir (Enter)
cd jdk1.6.0_17 (varies with jdk versions) (Enter)
jdk sürümünü kontrol etmek için C'ye gidin : / program files / java / jdk_version
cd bin (enter)
keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)
Android olan şifre isteyecektir.
Basitçe size Ana Etkinlik Dosyası açın ve aşağıda belirtilen fonksiyonu oluşturun:
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 (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
1.1 Size Uygulama çalıştırın, bu uygulamanız için bir Hash anahtarı oluşturur.
Şimdi, log cat'ı açın ve "KeyHash" ile arama yapın ve hash anahtarını kopyalayın.
Hash anahtarını oluşturduğunuzda bu işlevi kaldırabilirsiniz.
1) Başvurunuzu imzalamak için bir anahtar oluşturun ve takma adı hatırlayın.
2) OpenSSL'yi yükleyin.
3) OpenSSL'nin bin klasörünü yolunuza koyun.
4) FB-Android-SDK sayfasındaki "Tek Oturum Açma Kurulumu" altında belirtilen adımları izleyin ve Karma Anahtarınızı oluşturun. Doğru takma adı ve anahtar deposu dosya adını girdiğinizden emin olun.
5) Facebok üzerinde bir uygulama oluşturun ve Mobil Aygıtlar sekmesi altında bu Karma Anahtarını girin.
Facebook geliştirici sitesindeki Resmi Belgeler :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
ve hala anahtar karması alıyorum, depolanmış herhangi bir anahtar karmasıyla
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
Bu benim için çalıştı ...
Adımlar:
1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64
.................... give proper debug.keystore path and openSSL path ..
4) Finley it may be ask u password .. so give password -> android ...
5) you will get 28 characters that will be your has key
Linux için
Terminali Aç:
Hata Ayıklama Derlemesi için
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
Eğer wil bulmak debug.keystore onu kopyalayıp masaüstünde yapıştırmak klasör ".android" dan ve komuta yukarıda koşmak
Sürüm Derlemesi için
keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64
NOT: Her iki durumda da parola istemesi gerektiğinden emin olun. Parola istemezse, komutta bir şeyler yanlış demektir.
Android uygulaması için
Bu kod, Facebook entegrasyonu için Android uygulamanızda karma anahtarını almak için kullanılır. Tüm cihazları test ettim ve çalışıyor. Yalnızca bu kodun paket adını değiştirin:
private void facebookHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT);
System.out.println("Print the hashKey for Facebook :"+hashCode);
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
Şöyle cevap benzer bir konuda ben benim için çalışıyor gibi buldum:
apkname.apk
Eğer 'için karmasını bilmek istediğiniz dosyayı Java \ jdk1.7.0_79 \ bin ' klasöründekeytool -list -printcert -jarfile apkname.apk
SHA1
Değeri kopyalayın ve bu siteyi kullanarak dönüştürünEn basit çözüm:
Sürüm anahtarınızın karmasını oluşturmak için, sürüm anahtarı takma adınızı ve anahtar deponuzun yolunu kullanarak Mac veya Windows'ta aşağıdaki komutu çalıştırın.
Windows'ta şunları kullanın:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Bu komut 28 karakter dizesi oluşturmalıdır. Unutmayın KOPYA ve PASTA Facebook App ID Android ayarlarından içine bu Açma Anahtar Hash.
image: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png
Şuradan başvurun: https://developers.facebook.com/docs/android/getting-started#release-key-hash ve http://note.taable.com
Kotlin'deki baskı anahtarı karması için bunu kullanın
try {
val info = context.getPackageManager().getPackageInfo(context.packageName,
PackageManager.GET_SIGNATURES);
for (signature in info.signatures) {
val md = MessageDigest.getInstance("SHA")
md.update(signature.toByteArray())
Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
}
}catch (e:Exception){
}
Android Studio'da benimkini de çözdüm, ancak biraz farklı bir yaklaşımla.
Android Studio'da SHA-1 değerini almak için.
SHA-1 değeri şu CD'ye benzer: A1: EA: A3: 5C: 5C: 68: FB: FA: 0A: 6B: E5: 5A: 72: 64: DD: 26: 8D: 44: 84
ve SHA1 değerinizi base64'e dönüştürmek için http://tomeko.net/online_tools/hex_to_base64.php adresini açın . Bu Facebook oluşturulan karma "******************** =" gerektirir ve anahtar karma facebook uygulama konsoluna kopyalayın.
Bu cevabın bir kısmı buradan alınır Github Link
Karmaşık bir ve kolay olan iki yöntem vardır
Birinci Yöntem: (küçük Karmaşık)
öncelikle indirmek zorunda hepsinden SSL 64bit
veya 32bit
buna göre içeren isimle dosya indirmek için hatırlamak e
sürüm kodu sonra openssl-0.9.8e_X64.zip VEYA openssl-0.9.8e_WIN32.zip değil ile k
versiyon kodundan sonra,
ve AndroidStudio / jre / bin dizinine yerleştirin, nereye yerleştireceğinizi bilmiyorsanız, android stüdyo kısayoluna sağ tıklayarak bu dizini bulabilirsiniz:
şimdi bir yerde iki gerekli şeyi başardınız, ama yine de sizin için yolu bulmalısınız debug.keystore
, bu her zaman "C:\Users\yourusernamehere\.android\debug.keystore"
,
NOT Uygulamanız zaten yayınlanmışsa veya yayınlanmak üzere ise, yalnızca ve hata ayıklama kullanabileceğinizden daha geliştirme modunda test ediyorsanız, yayınlama imzalama anahtar deponuzu kullanın
Her şey kurulduktan sonra, karma anahtar üretimi için yürütmek istediğiniz komutu düzenleyin ve komut şu base64 format
şekilde görünecektir
keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64
varsayılan olarak android olan debug.keystore için bir şifre girmenizi teşvik edecektir. kendi anahtarınızı kullanıyorsanız şifre de sizin olacaktır. her şey beklendiği gibi giderse çıktı bu şekilde görünecektir, umarım yardımcı olabilir
İkinci Yöntem (Oldukça kolay olan)
yukarıdaki tüm prosedürleri düşünmek istemiyorsanız, haskey'i kaydetmek için sadece aşağıdaki yöntemi kullanın:
private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", e.toString());
}
}
çıktı:
En iyi yaklaşım aşağıdaki kodu kullanmaktır:
private void getHashKey(String pkgName)
{
try
{
PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hashKey = Base64.encodeBytes(md.digest());
_hashKey_et.setText(hashKey);
Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
Ancak Facebook uygulaması için HashKey'i oluşturmak için basit bir araç olmadığı gerçeğiyle o kadar sinir bozucuydum. Her seferinde Openssl ve Keytool ile oynamak ya da hash imzasını almak için bir kod kullanmak zorunda kaldım ...
Bu yüzden sizin için işe yarayacak basit bir KeyGenTool yazdım: -> Google Play'de KeyGenTool <-
Zevk almak :)
Akılda tutulması gereken küçük bir hata yaptım. Anahtar deponuzu kullanıyorsanız androiddebugkey değil, diğer adınızı verin ...
Sorunumu çözdüm. Şimdi Facebook cihazımda yüklü ise, yine de uygulamam Facebook giriş entegrasyonu hakkında veri alıyor. Sadece hash anahtarınızı önemseyin.
Lütfen aşağıya bakın.
C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64
Sonra tuşuna basın Enter- sizden şifreyi soracak ve ardından Android yerine anahtar deposu şifrenizi girecektir.
Güzel.
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button btn;
EditText et;
PackageInfo info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
et=(EditText)findViewById(R.id.editText1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
//String something = new String(Base64.encodeBytes(md.digest()));
et.setText("" + something);
Log.e("hash key", something);
}
} catch (NameNotFoundException e1) {
Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
Log.e("exception", e.toString());
}
}
});
}
}
Karma anahtarı almak için Kotlin kodu
private fun logHashKey() {
try {
val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
for (signature in info.signingInfo.signingCertificateHistory) {
val md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
val something = Base64.getEncoder().encodeToString(md.digest());
Log.e("hash key", something);
}
} catch (e1: PackageManager.NameNotFoundException) {
Log.e("name not found", e1.toString());
} catch (e: NoSuchAlgorithmException) {
Log.e("no such an algorithm", e.toString());
} catch (e: Exception) {
Log.e("exception", e.toString());
}
}
Lütfen hata ayıklama ve bırakma ortamında oluşturma ayarına göre değiştikleri için anahtarlar oluşturmayı unutmayın.
bunu dene :
1) komut satırını kullanarak karma anahtarı alın (Resmi Doküman: https://developers.facebook.com/docs/android/getting-started )
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64
VEYA
2) kodu kullanarak karma anahtarı alın
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Hask Kay generation
GetKeyHase();
}
private void GetKeyHase() {
try {
PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = (MessageDigest.getInstance("SHA"));
md.update(signature.toByteArray());
String hashkey_value = new String(Base64.encode(md.digest(), 0));
Log.e("hash key", hashkey_value);
//check you logcat hash key value
}
}catch (Exception e) {
Log.e("exception", e.toString());
}
}