Làm cách nào để tạo Android Facebook Key Hash?


182

Tôi hoàn toàn không hiểu quá trình này. Tôi đã có thể điều hướng đến thư mục chứa keytool trong SDK Java. Mặc dù tôi vẫn nhận được lỗi openssl không được nhận dạng như một lệnh bên trong hoặc bên ngoài. Vấn đề là ngay cả khi tôi có thể làm việc này, tôi sẽ làm gì và sau đó thì sao?


Nếu bạn đang sử dụng sdk facebook mới nhất và nếu bạn đã hoàn thành api facebook của mình một cách hoàn hảo thì khi đăng nhập, bạn nhấp vào đăng nhập vào facebook sau đó trong logcat của bạn, khóa băm được in ..
Mehul Ranpara

để tạo hàm băm khóa của bạn trên máy tính cục bộ của bạn, hãy chạy tiện ích keytool của Java (cần có trên đường dẫn của bàn điều khiển của bạn) chống lại kho khóa gỡ lỗi Android. Đây là, theo mặc định, trong thư mục .android nhà của bạn). Trên OS X, chạy: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64 Trên Windows, sử dụng: - keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% \. android \ debug.keystore | openssl sha1 -binary | openssl base64
Rakesh

Tại sao bất cứ ai cũng muốn tạo một khóa gỡ lỗi?
Anders Lindén

Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

Câu trả lời:


242

Dưới đây là những gì bạn cần làm -

Tải về openSSl từ Code Extract nó. tạo một thư mục- OpenSSL trong C: / và sao chép mã được trích xuất tại đây.

phát hiện đường dẫn tệp debug.keystore. Nếu bạn không tìm thấy, hãy thực hiện tìm kiếm trong C: / và sử dụng Đường dẫn trong lệnh trong bước tiếp theo.

phát hiện đường dẫn keytool.exe của bạn và đi đến dấu nhắc lệnh dir / in đó và chạy lệnh này trong 1 dòng-

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

Nó sẽ hỏi mật khẩu, đặt android là tất cả. bạn sẽ nhận được một khóa băm


Khi nó hỏi mật khẩu, tôi có thể đặt bất cứ thứ gì tôi muốn không?
Somk

5
@Max, mật khẩu mặc định là android.
jamapag

2
băm khóa không khớp với bất kỳ khóa băm nào được lưu trữ trên Android, không hoạt động
Boldijar Paul

1
Trước tiên, hãy tạo một kho khóa bằng cách vào Build -> Build Apk từ studio của bạn. cung cấp tên và mật khẩu, vv Lưu trữ dưới dạng tệp .jks tại một thư mục có thể truy cập dễ dàng. Bây giờ sao chép đường dẫn và tạo khóa bằng cách thay thế đường dẫn đó trong câu trả lời được đề cập ở trên.
buggydroid

1
Nó cho tôi thấy một lỗi: "... Biểu thức chỉ được phép là phần tử đầu tiên của đường ống. Tại dòng: 1 char: 184 ... Mã thông báo bất ngờ 'sha1' trong biểu thức hoặc câu lệnh. ... Biểu thức chỉ được phép dưới dạng các yếu tố đầu tiên của một đường ống dẫn ... bất ngờ token 'base64' trong biểu hoặc tuyên bố + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId:.. ExpressionsMustBeFirstInPipeline "
android phát triển

175

Dành cho Linux và Mac

Mở thiết bị đầu cuối:

Đối với bản dựng gỡ lỗi

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

Bạn sẽ tìm thấy debug.keystore trong thư mục ".android". Sao chép nó và dán vào màn hình nền và chạy lệnh trên.

Để phát hành Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

LƯU Ý: Đảm bảo rằng trong cả hai trường hợp, nó đều yêu cầu mật khẩu. Nếu nó không yêu cầu mật khẩu, điều đó có nghĩa là có gì đó không đúng trong lệnh. Mật khẩu cho debug.keystore" android " và để phát hành, bạn phải nhập mật khẩu mà bạn đã đặt trong khi tạo kho khóa .


3
Để rõ ràng, mật khẩu trống. Chỉ cần nhấn <enter> khi được nhắc.
Tom Redman

Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

1
Lưu ý này: "LƯU Ý: Đảm bảo rằng trong cả hai trường hợp, nó đều yêu cầu mật khẩu. Nếu không yêu cầu mật khẩu, điều đó có nghĩa là có gì đó không đúng trong lệnh." là điều cần thiết để giải quyết vấn đề
Bleno Silva

Cam ơn anh đa cưu cuộc đơi tôi. Tôi đã nhập mật khẩu mac của tôi cho mật khẩu lưu trữ toàn bộ thời gian và tôi nhận ra đó là sai
Lucky Angelo

1
Ngay cả việc yêu cầu mật khẩu không có nghĩa là mọi thứ đều ổn (sai mật khẩu, bí danh khóa sai). Chạy keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>một mình lúc đầu, để xem mọi thứ có ổn không. Ngoài ra, khi được dẫn, keytool ở chế độ không tương tác và hiển thị mật khẩu ở dạng văn bản thuần khi bạn nhập nó. Vì vậy, tốt hơn bạn nên viết một tập lệnh nhỏ chạy các lệnh riêng biệt.
Pierre

98

Vui lòng thử điều này:

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

Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

đây là con đường để đi
Tintinabulator Zea

1
Điều này hoạt động, nếu bạn gọi pContext.getPackageInfo. Hoặc chỉ cần loại bỏ nó khỏi một chức năng và gọi nó trong onCreate của bất kỳ hoạt động.
Dpedrinha

1
Bây giờ có vẻ là getPackageManager (). GetPackageInfo ([your-pack_name], PackageManager.GET_SIGNATOUND)
Đến

@Apurva Bạn có thể đặt nó trong Android SharedPreferences trong trường hợp có bất kỳ việc sử dụng nào sau đó.
Maddy

49

OpenSSL: Bạn phải cài đặt nó nếu nó không được cài đặt sẵn với hệ điều hành của bạn (ví dụ: Windows không được cài đặt sẵn) . Cách cài đặt tùy thuộc vào HĐH của bạn (đối với Windows, hãy kiểm tra liên kết được cung cấp bởi coder_For_Life22).

Cách dễ nhất mà không phải loay hoay là sao chép tệp nhị phân openssl.exe vào đường dẫn keytool của bạn nếu bạn ở trên Windows. Nếu bạn không muốn làm điều đó, bạn phải thêm nó vào PATHbiến môi trường của bạn . Sau đó thực hiện lệnh được cung cấp trong các tài liệu.

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

Lưu ý rằng đối số sau khi -keystoretrỏ đến kho khóa gỡ lỗi của bạn. Vị trí này cũng phụ thuộc vào hệ điều hành của bạn. Nên ở một trong những địa điểm sau:

  • Windows Vista hoặc 7 - C: \ Users \ .android \ debug.keystore
  • Windows XP - C: \ Documents and Settings \ .android \ debug.keystore
  • OS X và Linux - ~ / .android / debug.keystore

Nếu bạn đã làm mọi thứ đúng, bạn sẽ được nhắc nhập mật khẩu. Đó là androidcho chứng chỉ gỡ lỗi. Nếu mật khẩu đúng, bàn điều khiển sẽ in một hàm băm (ký tự và số hơi ngẫu nhiên).

Lấy nó và sao chép nó vào android key hashtrường bên trong các tùy chọn của ứng dụng của bạn trên facebook. Để đến đó, hãy truy cập developers.facebook.com/apps , chọn ứng dụng của bạn, truy cập Edit settingsvà cuộn xuống. Sau đó, đợi vài phút cho đến khi các thay đổi có hiệu lực.


Tôi đã chạy cái này trong cmd và nó đưa ra một danh sách rất dài các ký tự trông giống như một hàm băm kết thúc bằng dấu = không có gì $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ .android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64
Somk

Âm thanh chính xác. Chỉ cần thử nó trên máy của tôi, tôi đã có 28 ký tự, chỉ để cho bạn một ý tưởng. Bây giờ chỉ cần sao chép nó và bạn ổn. :)

Tôi đã không được nhắc sử dụng Android thưa thớt. Xin lỗi tôi có bị chậm không?
Somk

Thành thật mà nói, tôi không chắc tại sao bạn không được nhắc về điều đó. Nhưng nó có vẻ đúng với tôi. Ý tôi là, nếu bạn đã làm điều gì đó sai, thay vào đó nên có một thông báo lỗi. Chỉ cần sao chép nó và xem nếu nó hoạt động. Bạn có thể kiểm tra một số truy vấn biểu đồ với Trình khám phá API API . Chọn ứng dụng của bạn trên đầu và xem nếu bạn nhận được kết quả hợp lệ. Nó sẽ nhổ một lỗi nếu có gì đó sai. Chỉnh sửa: Và không có gì sai với ong chậm. Chúng tôi không vội. :)

24

để tạo hàm băm khóa của bạn trên máy tính cục bộ của bạn, hãy chạy tiện ích keytool của Java (cần có trên đường dẫn của bàn điều khiển của bạn) chống lại kho khóa gỡ lỗi Android. Đây là, theo mặc định, trong thư mục .android nhà của bạn). Trên OS X, chạy:

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

Trên Windows, sử dụng: -

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

Hy vọng điều này sẽ giúp bạn

Trang web giới thiệu nhà phát triển


Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

19

Dưới đây là chi tiết đầy đủ (Dành cho Windows)

1. Tải xuống OpenSSl thứ 3 hoặc thứ 4 (với e sẽ hoạt động tốt hơn) dựa trên hệ thống của bạn 32 bit hoặc 64 bit.

2. Giải nén zip đã tải xuống trong thư mục C

3. Mở thư mục giải nén lên bin và sao chép đường dẫn, nó sẽ giống như C:\openssl-0.9.8k_X64\bin\openssl (thêm \ openssl ở cuối)

4. (Nhận đường dẫn đến thư mục bin của Jdk, nếu bạn biết cách, hãy bỏ qua phần này).

Mở android studio ~ file ~ Cấu trúc dự án (ctrl + alt + shift + s), chọn vị trí SDK trong bảng điều khiển bên trái, sao chép vị trí JDK và thêm / bin vào nó

Vì vậy, vị trí JDK cuối cùng sẽ giống như C:\Program Files\Android\Android Studio\jre\bin

chúng tôi đang theo phương pháp này để có được vị trí Jdk vì bạn có thể sử dụng jdk nhúng như tôi

nhập mô tả hình ảnh ở đây

bây giờ bạn có vị trí OpenSSl & vị trí JDK

5. bây giờ chúng ta cần gỡ lỗi vị trí kho khóa, đối với C ~> Người dùng đang mở ~> YourUserName ~> .android nên có một tên tệp debug.keystore, bây giờ sao chép vị trí đường dẫn, nó sẽ giống như

C:\Users\Redman\.android\debug.keystore

6. bây giờ mở dấu nhắc lệnh và gõ lệnh

cd YourJDKLocationFromStep4  

trong trường hợp của tôi

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7. bây giờ xây dựng lệnh sau

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

trong trường hợp của tôi lệnh sẽ như thế nào

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

Bây giờ hãy nhập lệnh này trong dấu nhắc lệnh, nếu bạn đã từng làm đúng, bạn sẽ được yêu cầu nhập mật khẩu (mật khẩu là android)

Enter keystore password:  android

chỉ vậy thôi, bạn sẽ được cấp Key Hash, chỉ cần sao chép và sử dụng nó

Đối với KeyHash đã ký, xây dựng lệnh sau

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

nhập mật khẩu kho khóa của bạn, nếu bạn nhập sai mật khẩu, nó sẽ cung cấp sai KeyHash

GHI CHÚ

Nếu vì một lý do nào đó nếu nó báo lỗi ở một số đường dẫn thì hãy bọc đường dẫn đó trong dấu ngoặc kép. Ngoài ra, vỏ điện Windows không hoạt động tốt với tôi, tôi đã sử dụng git bash (hoặc sử dụng dấu nhắc lệnh).

thí dụ

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

1
Cảm ơn bạn rất nhiều, đây là một hướng dẫn rất chi tiết cho người mới bắt đầu!
Pablo Quemé

@Tamim Producttion thử quy trình tương tự ở trên với phiên bản k của openssl và xem code.google.com/archive/p/openssl-for-windows/doads
Manohar Reddy

@Tamim Productstion nếu bạn nhập sai mật khẩu, nó sẽ trả về keyhash sai. bạn cũng đã xây dựng apk sau khi xóa kho khóa chưa?
Manohar Reddy

@Tamim Producttion tải xuống và cài đặt ứng dụng Facebook, đăng nhập vào ứng dụng facebook. mở ứng dụng của bạn và đăng nhập facebook. Nó sẽ cung cấp cho bạn hàm băm chính trong ứng dụng facebook, kiểm tra xem nó có giống với bạn không
Manohar Reddy


18

Bạn chỉ có thể sử dụng một dòng javascript trong bảng điều khiển trình duyệt để chuyển đổi khóa bản đồ hex thành base64. Mở giao diện điều khiển trong trình duyệt mới nhất (F12 trên cửa sổ) và dán đoạn mã và thay thế SHA-1, SHA-256đồ hex mà Google Play cung cấp dưới 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="

1
Bạn là một phao cứu sinh, Cảm ơn
Yusuf Adeyemo

SHA-1 là một.
Travo

16

Có một giải pháp ngắn quá. Chỉ cần chạy nó trong ứng dụng của bạn:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Phiên bản dài hơn không cần FB SDK (dựa trên giải pháp tại đây ):

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

Kết quả sẽ kết thúc bằng "=".


1
Tôi nhận thấy rằng hàm băm chính của tôi có '_' trong đó không được FB cho phép. Để sử dụng hàm băm, tôi phải thay đổi nó thành '/'.
Abdelalim Hassouna

Chức năng Facebook đã trả lại khóa của tôi vì -AAAAAAAA_AAAAAA-AAAAAAAAAAđiều đó không được Facebook cho phép, printHashKey đã trả lại khóa ở định dạng hợp lệ+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov

@GrafOrlov Thật kỳ quặc. Có thể họ có lỗi trên một số phiên bản FB SDK mới. Bạn nên báo cáo về nó cho họ.
nhà phát triển Android

9

Cho cửa sổ:

  1. mở dấu nhắc lệnh và dán bên dưới lệnh

keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binary | openssl cơ sở64

  1. Nhập mật khẩu: android -> Nhấn Enter

  2. Sao chép Khóa Hash đã tạo -> Đăng nhập Facebook bằng tài khoản nhà phát triển của bạn

  3. Truy cập Ứng dụng Facebook của bạn -> Cài đặt -> Dán phím Hash trong tùy chọn "băm khóa" -> lưu thay đổi.

  4. Bây giờ hãy thử nghiệm ứng dụng Android của bạn với Đăng nhập / Chia sẻ trên Facebook, v.v.


Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

Xin chào, tôi có thể tạo khóa băm thông qua mã trong hoạt động chính của mình nhưng khóa băm được tạo đó chỉ hoạt động trên một thiết bị. Khi tôi cài đặt cùng apk trong một thiết bị khác và chạy thì nó hiển thị lỗi khóa băm không hợp lệ. Có điều gì tôi đang thiếu.
Deepak

8

Kể từ API 26, bạn có thể tạo các HASH KEYS của mình bằng cách sử dụng mã sau trong KOTLINE mà không cần bất kỳ SDK Facebook nào.

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

}

nhập mô tả hình ảnh ở đây


Ý bạn là tôi đặt mã của bạn vào class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
asdfasdf

6

Đó là cách tôi có được:

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

Vì vậy, khi bạn đang cố gắng nhập mà không có chìa khóa, một ngoại lệ sẽ xảy ra. Facebook đưa khóa ĐÚNG vào ngoại lệ này. Tất cả bạn cần làm là sao chép nó.


Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

6

Nếu bạn đã tải ứng dụng lên Play store, bạn có thể tạo Hash Key như sau:

1) Chuyển đến Quản lý phát hành tại đây

2) Chọn Quản lý phát hành -> Ký ứng dụng

3) Bạn có thể thấy khóa SHA1 ở định dạng hex Chứng chỉ ký ứng dụng.


4) Sao chép SHA1 ở định dạng hex và chuyển đổi nó sang định dạng base64, bạn có thể sử dụng liên kết này để làm điều đó mà không cần SHA1: một phần của hex.


5) Chuyển đến bảng điều khiển dành cho nhà phát triển của Facebook và thêm khóa (sau khi chuyển đổi sang cơ sở 64) trong cài đặt -> cơ bản -> băm khóa.



3

Tải xuống ssl mở :

Sau đó thêm openssl \ bin vào các biến hệ thống đường dẫn:

Máy tính của tôi -> thuộc tính -> Cấu hình nâng cao -> Nâng cao -> Biến hệ thống -> bên dưới biến hệ thống tìm đường dẫn và thêm phần này vào phần cuối của nó :; yourFullOpenSSLDir \ bin

Bây giờ hãy mở một dòng lệnh trên thư mục jdk \ bin của bạn C: \ Program Files \ Java \ jdk1.8.0_40 \ bin (trên windows giữ shift và nhấp chuột phải -> mở dòng lệnh ở đây) và sử dụng:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

Và sao chép số 28 chiều dài mà nó tạo ra sau khi cung cấp mật khẩu.


Tôi chưa thấy rằng câu trả lời ban đầu đã có liên kết openssl. Nhưng nó vẫn hữu ích cho biến hệ thống.
sagits

Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

Tất nhiên, bạn có chắc là bạn đã tạo ra số 28 chiều dài không? Nếu vậy, bây giờ bạn phải truy cập trang web của nhà phát triển facebook (tìm kiếm trên google) và tạo một ứng dụng mới, trong cài đặt, bạn có thể thêm ứng dụng Android mới, ở đó bạn dán keyhash và tên hoạt động của bạn (nơi đặt mã đăng nhập ). Có một hướng dẫn về nó trên facebook nữa
sagits

Cảm ơn vì đã trả lời nhanh, tôi sẽ dùng thử ngay
Apurva 8/10/2015

3

Chạy cái này trong ứng dụng của bạn:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

Hoặc này:

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

Và sau đó nhìn vào các bản ghi.

Kết quả sẽ kết thúc bằng "=".

Giải pháp dựa trên đâyđây .


3

CÁCH DỄ DÀNG -> Không cài đặt openssl -> SỬ DỤNG GIT BASH!

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

Mật khẩu mặc định là "android"

Hầu hết chúng ta đã cài đặt Git Bash, vì vậy đây là cách yêu thích của tôi.


3

điều này cũng sẽ giúp người mới.

chỉ cần thêm chi tiết vào câu trả lời của @ coder_For_Life22.

nếu câu trả lời này giúp bạn đừng quên upvote. nó thúc đẩy chúng tôi

đối với điều này, bạn phải biết đường dẫn của tệp kho khóa và mật khẩu của ứng dụng

cho ví dụ này, hãy xem xét khóa được lưu trữ tại "c: \ keystorekey \ new.jks"

1. mở trang này https://code.google.com.vn/archive / p / openssl-for-windows / download

2. tải xuống tệp zip 32 hoặc 64 bit theo hệ điều hành windows của bạn.

3. giải nén tập tin đã tải xuống bất cứ nơi nào bạn muốn và ghi nhớ đường dẫn.

4. cho ví dụ này, chúng tôi xem xét rằng bạn đã trích xuất thư mục trong thư mục tải xuống.

vì vậy địa chỉ tệp sẽ là "C: \ Users \ 0 \ Tải xuống \ openssl-0.9.8e_X64 \ bin \ openssl.exe";

5. bây giờ trên bàn phím nhấn windows + nút r.

6. điều này sẽ mở hộp chạy.

7. gõ cmd và nhấn Ctrl + Shift + Enter .

8. điều này sẽ mở dấu nhắc lệnh như quản trị viên.

9. ở đây điều hướng đến thư mục bin của java:

nếu bạn sử dụng jre do Android Studio cung cấp, bạn sẽ tìm thấy đường dẫn như sau:
a. mở studio android.
b. tập tin-> cấu trúc dự án
c. trong khung bên trái, nhấp vào 'vị trí SDK'
d. trong khung bên phải, bên dưới 'vị trí JDK' là đường dẫn jre của bạn.
e. thêm "\ bin" ở cuối đường dẫn này dưới dạng tệp "keytool.exe", chúng tôi cần, nằm trong thư mục này.
ví dụ này tôi xem xét,
"C: \ Program Files \ Java \ jre-10.0.2 \ bin"
nếu bạn đã cài đặt java 32 bit, nó sẽ ở trong
"C: \ Program Files (x86) \ Java \ jre-10.0.2 \ bin"
10. ngay bây giờ với các đường dẫn trên thực hiện lệnh như sau:

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
  1. Bạn sẽ được yêu cầu nhập mật khẩu, cung cấp mật khẩu bạn đã cung cấp khi tạo khóa kho khóa.

    !!!!!! cái này sẽ cho bạn chìa khóa

lỗi: nếu bạn nhận được:
---
'keytool' không được nhận dạng như một lệnh bên trong hoặc bên ngoài
---
điều này có nghĩa là java được cài đặt ở một nơi khác.


3

bước 1-> C: \ Tệp chương trình \ Java \ jdk1.6.0_43 \ bin>

Bước 2-> keytool -list -v -keystore C: \ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

u có giá trị SHA1 nhấp vào liên kết này u chuyển đổi giá trị SHA1 của bạn thành HASH KEY

Tôi chắc chắn 100% liên kết này sẽ giúp bạn


3

Cách dễ dàng

Bằng cách sử dụng trang web này, bạn có thể nhận được Hash Key bằng cách chuyển đổi khóa SHA1 thành Hash Key cho Facebook.


2

Bạn có thể nhận được tất cả dấu vân tay của mình từ https://console.developers.google.com/projectselector/apis/credentials
Và sử dụng mã Kotlin này để chuyển đổi nó thành keyhash:

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

1

https://developers.facebook.com/docs/android/getting-started/

4.19.0 - 25 tháng 1 năm 2017

SDK Facebook

Sửa đổi

SDK Facebook hiện được tự động khởi tạo khi ứng dụng khởi động. Trong hầu hết các trường hợp, một cuộc gọi thủ công tới FacebookSDK.sdkInitialize () không còn cần thiết nữa. Xem hướng dẫn nâng cấp để biết thêm chi tiết.

Để gỡ lỗi

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

1

Chỉ cần chạy mã này trong bạn OnCreateView Hoặc OnStart Actvity và Chức năng này Return bạn phát triển chính Hash .

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";
}

0

Tôi đã có cùng một vấn đề chính xác, tôi đã không được yêu cầu nhập mật khẩu và dường như tôi đã có đường dẫn sai cho tệp kho khóa.

Trong thực tế, nếu keytool không tìm thấy kho khóa mà bạn đã đặt, nó sẽ tạo một khóa và cung cấp cho bạn khóa sai vì nó không sử dụng đúng khóa.

Nguyên tắc chung là nếu bạn không được yêu cầu nhập mật khẩu thì bạn đã tạo khóa sai.


Tôi đã tạo băm khóa nhưng không biết đặt khóa đó ở đâu, bạn sẽ hướng dẫn cho tôi chứ? Tôi đang chạy android studio trên Ubuntu.
Apurva

0

Bạn có thể sử dụng apk này

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

@Elynad Đó là tiếng Trung Quốc: D
armnotstrong


0

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users ** Deepak **. android \ debug.keystore" | " C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | " C: \ Users \ Deepak \ ssl \ bin \ openssl" cơ sở64

2 Thay đổi trong lệnh trên 1.Deepak === Thay thế bằng Hệ thống USERNAME 2.C: \ Users \ Deepak \ ssl === thay thế đường dẫn SSL mở của bạn

chạy lệnh này và nhận đầu ra như thế này

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C: \ Users \ Deepak \ ssl \ bin \ openssl" base64 Nhập mật khẩu kho khóa: ****** ga0RGNY ****** / TÌM HIỂU =


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.