it-swarm-vi.com

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

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 tiếp tục nhận được lỗi openssl không được công nhận là một lệnh nội bộ 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?

142
Somk

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

Tải về openSSl từ Code Giải nén 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, sau đó 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 tới lệnh dir/in đó Nhắc 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 thế thôi. bạn sẽ nhận được một khóa băm

190
coder_For_Life22

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 Bản dựng

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 .

130
Biraj Zalavadia

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

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(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);
        }
    }
68
Maddy

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 link đượ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 biến môi trường PATH 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 -keystore trỏ đế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:\Tài liệu và cài đặt\.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à Android cho 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 trường Android key hash bên trong 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 settings và cuộn xuống. Sau đó, đợi vài phút cho đến khi các thay đổi có hiệu lực.

45
user658042

để 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

21
Rakesh

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

Một cái 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 "=".

12
android developer

Đối với một người như tô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. Trích xuất 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 điều này). 

Mở Android studio ~ tệp ~ 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 đó 

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

 enter image description here

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 

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

6. bây giờ mở lệnh Nhắc 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ẽ trông như 

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 lệnh Nhắc, 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 

CH&UACUTE; TH&IACUTE;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, Windows power Shell không hoạt động tốt với tôi, tôi đã sử dụng git bash (hoặc sử dụng lệnh Prompt).

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
11
Manohar Reddy

Cho cửa sổ:

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

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

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

  2. Sao chép khóa Hash được 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 kiểm tra ứng dụng Android của bạn với Đăng nhập/Chia sẻ trên Facebook, v.v.

9
swiftBoy

Đó 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ó. 

6
Valikpon

Để dễ dàng liên kết hướng dẫn vedio cho việc tạo KeyHash Tại đây

Tải xuống openssl từ TẠI Đ&ACIRC;Y

5
Arpit Patel

Kể từ API 26, bạn có thể tạo HASH KEYS bằng cách sử dụng mã sau trong KOTLIN 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)
    }

}

 enter image description here

4
Hanny

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 tại đâytại đây .

3
android developer

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.

3
sagits

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ở bảng điều khiển trong trình duyệt mới nhất (F12 trên windows) và dán mã và thay thế SHA-1, SHA-256 bản đồ hex mà Google play cung cấp trong _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="
_
2
Christos Lytras

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.

1
Dmitri R117

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
Alexmelyon

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
Ketan Ramani

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 this liên kết để 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.

1
SumiSadiq

Tôi đã tìm thấy công cụ đơn giản nhất và sử dụng nó nhiều lần, Nó hoạt động hoàn hảo. kiểm tra nó, nó sẽ giúp.

Kiểm tra này trả lời để biết thêm chi tiết.

1
TapanHP

Hãy thử câu trả lời này

https://stackoverflow.com/a/54513168/9236994

với những nỗ lực tối thiểu giúp giải quyết vấn đề.

0
Vicky Salunkhe

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.

0
Nick Tsitlakidis

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

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
0
armnotstrong

đ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.

[.__.] vì điều này bạn phải biết đường dẫn của tệp và mật khẩu kho khóa 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/doads

[.__.] 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. trong ví dụ này, chúng tôi cho 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 nút windows + r.

[.__.] 6. Điều này sẽ mở hộp chạy.

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

số 8. Điều này sẽ mở lệnh Nhắc với tư cách 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ở Android studio.
[.__.] b. tập tin-> cấu trúc dự án
[.__.] C. trong khung bên trái, nhấp vào 'vị trí SDK'
Cười mở miệng. 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.
[.__.] cho ví dụ này tôi xem xét, bạn đã cài đặt Java riêng biệt và sau đây là đường dẫn
[.__.] "C:\Tệp chương trình\Java\jre-10.0.2\bin"
[.__.] nếu bạn đã cài đặt 32 bit Java nó sẽ ở trong
[.__.] "C:\Tệp chương trình (x86)\Java\jre-10.0.2\bin"
[.__.] 10. 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 công nhận là lệnh nội bộ 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.

0
sifr_dot_in