Tích hợp Facebook với băm khóa không hợp lệ


194

Trong một trong những ứng dụng của mình, tôi cần lấy dữ liệu từ Facebook ... Tôi đang làm điều này:

Tôi đã tạo ID ứng dụng . Nó đăng nhập thành công, nhưng sau khi đăng xuất, tôi đăng nhập và sau đó nó cho tôi:

Ảnh chụp màn hình lỗi băm khóa không hợp lệ Facebook

Tôi đang làm gì sai? Tôi đang sử dụng SDK Facebook ... Tôi đã cài đặt Facebook trên điện thoại của mình ... Nó đang chạy tốt trong trình giả lập, nhưng không cài đặt ứng dụng Facebook sẵn có.

Đây là mã của tôi:

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
nhưng nó chạy tốt lần đầu tiên vì nó không hoạt động nếu tôi đăng nhập sau khi đăng xuất xong
Android

1
vâng, tôi đã tạo .. bằng cách sử dụng thử for (Chữ ký chữ ký: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (chữ ký.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android

1
Tôi đã giải quyết vấn đề này ở đây! Ở đây hiểu rất tuyệt! [ Stackoverflow.com/questions/5306009/, ] [1]
Madi

3
@Android Mặc dù điều này đã cũ, nhưng tôi nên đề cập đến điều này. Điều này không xảy ra khi người dùng đăng xuất và sau đó đăng nhập. Điều này xảy ra khi bạn gỡ lỗi lần thứ hai tức là cài đặt lại ứng dụng trong khi gỡ lỗi. Do đó, hàm băm thay đổi. Điều này không xảy ra trong trường hợp ứng dụng đã ký (sẵn sàng sản xuất)
Nilay Vishwakarma

1
Bạn có gặp lỗi tương tự nếu bạn gỡ cài đặt Ứng dụng Facebook không? Tôi đã thử nghiệm từ hai điện thoại và lỗi này chỉ xảy ra khi Ứng dụng Facebook được cài đặt.
Jaime Montoya

Câu trả lời:


274

Khóa băm được tạo là sai. Bạn có thể nhận được khóa băm bằng hai bước.

Một là thông qua một dấu nhắc lệnh. Một số khác là thông qua mã hóa. Khóa băm thông qua một dấu nhắc lệnh chỉ hoạt động lần đầu tiên. Tôi không biết lý do. Tôi cũng đã có vấn đề tương tự. Vì vậy, tôi đã thử nó thông qua lập trình.

Thực hiện theo các bước sau:

Dán đoạn mã sau vào 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) {
}

Sửa đổi "com.example.packagename" với tên gói của bạn trong mã hóa ở trên mà không bị lỗi (bạn có thể tìm thấy tên gói của mình trong tệp kê khai Android).

Chạy ứng dụng của bạn. Đi đến hoạt động mà bạn dán đoạn mã trên. Trong tệp LogCat, tìm kiếm "KeyHash". Bạn có thể tìm thấy một hàm băm quan trọng. Sao chép mã băm chính và vào trang bảng điều khiển ứng dụng Facebook. Đi đến cài đặt và nhập các chi tiết như trong hình dưới đây.

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

Khi bạn hoàn thành bước trên, hãy khởi chạy lại ứng dụng. Bây giờ bạn có thể đăng nhập vào Facebook. Để biết thêm chi tiết về khóa băm, kiểm tra liên kết .

Nếu bạn thêm thông tin sai trong trang cài đặt, điều đó có nghĩa là nó sẽ đưa ra một số lỗi. Vì vậy, sử dụng thông tin chính xác ở đó. Và nếu công chúng (ngoài bạn) cần sử dụng ứng dụng của bạn nghĩa là bạn cần kích hoạt quyền (thay đổi "có" trong "Trạng thái & Đánh giá" bên cạnh cài đặt) .


20
Bằng cách này, rất có thể bạn đã có một hàm băm cho kho khóa gỡ lỗi. Nó hoạt động cho bạn trong chế độ phát triển, không phải là công việc cần thiết cho chế độ sản xuất của bạn. Ít nhất, nó không hoạt động cho ứng dụng sản xuất của tôi.
Liangjun

3
cảm ơn bạn đã tiết kiệm rất nhiều thời gian của tôi ... tài liệu chính thức của facebook không nên đọc nó là nhảm nhí
DjP

Cảm ơn bạn rất nhiều anh chàng!
KinGPinG

Hey bởi mã này GóiInfo thông tin = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATOUND); for (Chữ ký chữ ký: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (chữ ký.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); một khóa băm khác được gửi trong khi tôi chạy lệnh trong cmd trên windows, khóa băm của tôi khác và tôi đã thêm nó vào FB nhưng bản ghi vẫn hiển thị mã băm của mã lập trình
Sagar Devanga

1
Tiết kiệm cho tôi rất nhiều thời gian. Vẫn tốt nhất. Kiểm tra verbose cho keyhash và sao chép và dán nó vào trang nhà phát triển facebook. Đừng mắc sai lầm khi gõ thủ công! Ngoài ra, hãy hiểu rằng keyhash thay đổi mỗi khi bạn gỡ cài đặt và cài đặt ứng dụng.
sanjeev

188

Nếu bạn đang sử dụng ứng dụng Google Play:

Mở phần ký ứng dụng trong Google Play Console và nhận băm SHA-1 trong chứng chỉ ký ứng dụng . Sau đó chuyển đổi nó thành Base64 , ví dụ với công cụ này: Bộ giải mã chuỗi hexadecimal -> base64

Ảnh chụp màn hình bảng điều khiển

Chuyển đổi sang ảnh chụp màn hình Base64


14
Quý ngài! bạn là một cứu cánh! Rất nhiều tình yêu. Tôi đã sử dụng chữ ký của Play Store trong khi tôi đã đặt băm từ các khóa phát hành cục bộ của mình trong bảng điều khiển của facebook.
Taha Rushain

4
Bạn cứu mạng tôi, tôi đang sử dụng phản ứng, không ai đề cập đến việc ký ứng dụng cửa hàng play
TomSawyer

7
Cảm ơn bạn! Nó hoạt động! Bạn cũng có thể sử dụng lệnh đầu cuối cho nó: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Yuriy Seredyuk

4
Đây là những gì cần phải được thực hiện cho môi trường sản xuất !!! Đồng ý
Bikey

Chính xác những gì tôi muốn biết. Hashkey thay đổi trong gỡ lỗi mỗi khi bạn gỡ cài đặt và cài đặt ứng dụng. Đối với apk đã ký, đây là giải pháp tốt nhất! Bạn ppl làm cho cuộc sống dễ dàng hơn nhờ!
sanjeev

122

Nếu bạn đang gặp phải vấn đề này thì hãy đặt khóa này vào developer.facebook.com của bạn :

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

Thì chắc chắn rằng ứng dụng của bạn là sống trên developer.facebook.com .

Vòng tròn màu xanh lá cây này cho biết ứng dụng đang hoạt động:

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

Nếu không, hãy làm theo hai bước sau để ứng dụng của bạn hoạt động:

Bước 1 Chuyển đến ứng dụng của bạn → cài đặtthêm Email liên hệ và áp dụng Lưu thay đổi.

Bước 2 Chuyển đến tùy chọn Đánh giá ứng dụng và đảm bảo chuyển đổi này là . Tôi đã thêm một ảnh chụp màn hình:

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

Lưu ý: Nếu bạn muốn sao chép hashkey, hãy kiểm tra BlueServiceQueue trong LogCat .


5
Có một cách dễ dàng để sao chép băm đó từ điện thoại?
Daniel Shatz

4
@DanielShatz nó xuất hiện trong logcat. Tôi phát hiện ra chỉ sau khi tôi sao chép nó từng chữ.
Alaa M.

4
@DanielShatz Tìm kiếm thẻ BlueServiceQueuetrong logcat
Alaa M.

4
Câu trả lời này đã làm việc cho tôi. Sau một số lần gõ băm thủ công, nó cũng gây ra lỗi tương tự, vấn đề là, tôi đã gõ chữ i "I" thay vì chữ thường L "l". Mất một thời gian để tôi nhận ra điều này.
Markus

1
Điều này đang hoạt động nhưng tôi tự hỏi từ đâu FB có được khóa băm này? Không ai thắc mắc? Lỗi đã hiển thị khóa băm hoạt động tốt, nhưng ngay cả với tất cả các lệnh hoặc nhận sha1 đến base64 từ ký ứng dụng google đã cung cấp cho tôi khóa mà FB hiển thị trong lỗi ... Dù sao cũng xin cảm ơn
Umar3x

82

Tôi đã có cùng một vấn đề. Tôi chắc chắn rằng đó là do lỗi rất nhỏ và đúng vậy!

Tôi tìm thấy giải pháp:

Khi tạo khóa băm gỡ lỗi trong máy tính của tôi, tôi đã nhập mật khẩu của hệ thống. Nhưng mật khẩu phải như sau -

Nhập mật khẩu kho khóa: "android". Đây là vấn đề duy nhất trong trường hợp của tôi.

----- Để tạo hàm băm Debug , hãy sử dụng lệnh này -

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

Nhập mật khẩu kho khóa: 'android'

----- Để tạo băm khóa phát hành , sử dụng lệnh này -

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

Cung cấp mật khẩu lưu trữ khóa của bạn sau khi thực hiện lệnh này.


5
sử dụng "android" làm mật khẩu hoạt động với tôi. điều này thật khó hiểu
adbie

3
sử dụng "android" này làm mật khẩu khi tạo khóa băm.
Akash Bisariya

2
trên máy tính windows, đảm bảo rằng biến đường dẫn được đặt đúng cho các thư mục openssl \ bin và java .. \ bin. Đồng thời đặt biến HOMEPATH để có thể sử dụng các lệnh từ facebook.
KawaiKx

1
Ít nhất trên mac tôi đã phải cài đặt Java JDK để làm việc này. Mặt khác, lệnh gỡ lỗi ở trên vẫn tạo ra một hàm băm, nhưng hàm băm không hoạt động và bạn sẽ không được nhắc nhập mật khẩu. Với JDK được cài đặt, nó hoạt động như một bùa mê.
lejonl

1
câu trả lời này phải là TRẢ LỜI ĐÚNG
Evan Ngo

20

Tôi đã trải qua vấn đề tương tự. Tôi đã thực hiện một nghiên cứu ngắn về những lý do có thể cho hành vi kỳ lạ này và tôi đã tìm thấy như sau:

  • Trong lần thực hiện đầu tiên của một ứng dụng Facebook mới, nó sẽ cho phép kết nối / đăng nhập ngay cả khi bạn không chỉ định bất kỳ băm khóa nào.

  • Đối với tôi, hướng dẫn mà Facebook cung cấp không tạo ra hàm băm chính xác, bởi vì nó đưa ra cấu hình sai . Khi thực hiện:

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

đảm bảo bạn kiểm tra tất cả các thuộc tính - HOMEPATHsự tồn tại của kho khóa, v.v. Có lẽ bạn cũng phải cung cấp mật khẩu.

  • Điều tạo ra cấu hình phù hợp là giải pháp được đề xuất bởi @Mahendran .

  • Ngoài ra, nếu bạn thấy lỗi được đăng ban đầu ( http://i.stack.imgur.com/58q3v.png ), rất có thể hàm băm chính bạn nhìn thấy trên màn hình là lỗi thực sự của bạn. Nếu không có gì khác hoạt động, hãy thử nhập nó vào Facebook.

Tôi đã nhận được tất cả các kết quả đó với: Windows 7 phiên bản 64 bit, Android Studio 1.2.2, JDK 7.


2
phiên bản linux: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -binary | openssl base64`
ruX

1
Chỉ cần nhập những gì được hiển thị bởi facebook trên màn hình thiết bị, sẽ hoạt động. Cảm ơn bạn đã ghi chú @Martin
ralphgabb

14

Theo Đăng nhập Facebook cho Android , bạn phải cung cấp giá trị băm chính. Để có được nó, bạn sẽ cần chìa khóa được sử dụng để ký đơn.

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

1
chỉ muốn thêm một bình luận, sử dụng kho khóa sản xuất của bạn.
Liangjun

2
@Liangjun Trên thực tế, bạn nên sử dụng tất cả các khóa của mình vì nếu không, bạn sẽ không thể kiểm tra Đăng nhập Facbeook trong môi trường gỡ lỗi.
Pijusn

2
@Pius, vâng, tôi thực sự sử dụng cả hai khóa. Tôi nên nói rõ ràng.
Liangjun

Tôi gặp lỗi cho lệnh này (Không có thời gian chạy Java, yêu cầu cài đặt.) Nhưng vẫn nhận được một khóa, tuy nhiên không hợp lệ và tôi chỉ sao chép dán từ logcat mà không cho tôi biết.
Cristi Băluță

8

Bạn phải tạo hai băm chính, một cho Gỡ lỗi và một cho Phát hành.

Đối với gỡ lỗi hàm băm :

Trên OS X, chạy:

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

Trên Windows, chạy:

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

Gỡ lỗi khóa băm nguồn

Đối với hàm băm phát hành :

Trên OS X, hãy chạy (thay thế giữa <>giá trị của bạn) :

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

Trên Windows, sử dụng (thay thế giữa <>giá trị của bạn) :

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

Phát hành khóa băm nguồn


Tôi gặp lỗi cho lệnh này (Không có thời gian chạy Java, yêu cầu cài đặt.) Nhưng vẫn nhận được một khóa, tuy nhiên không hợp lệ và để nó hoạt động, tôi chỉ sao chép dán từ logcat
Cristi Băluță

Có lẽ bạn chưa thiết lập PATH của java và keytool của mình trong dòng lệnh? @ CristiBăluță
MBH

7

Tôi đã thử tất cả các câu trả lời trước đó và không có gì giúp ích cho trường hợp của tôi với khách hàng của tôi!

Sau đó, khách hàng của tôi nhớ rằng anh ta đã cài đặt Ứng dụng Facebook trên thiết bị của mình. Sau khi anh gỡ nó ra. đăng nhập hoạt động hoàn hảo.

Hàm băm đã được thay đổi và tôi đã thay thế các khóa băm cũ tại Bảng điều khiển dành cho nhà phát triển của Facebook bằng khóa từ lỗi (như được đề xuất ở trên) và nó hoạt động!

Bản thân Ứng dụng Facebook có thể là một vấn đề, vì vậy tốt hơn hết bạn nên tìm hiểu điều này trên một thiết bị có cài đặt ứng dụng Facebook và trên thiết bị có ứng dụng Facebook không được cài đặt và xử lý cả hai trường hợp ...


Có giống ở đây tôi đã gặp lỗi này sau khi cài đặt ứng dụng facebook trên thiết bị. Vì vậy, hiện tại tôi đặt 2 khóa băm trên cài đặt dev của Facebook.
kẹt vào

3
Tôi có hoàn cảnh rất giống với bạn. Điều giúp tôi là vào trang FB của bạn - Cài đặt - Ứng dụng - Xóa ứng dụng khỏi danh sách. Thay đổi mã băm và cài đặt lại ứng dụng fb và ứng dụng của bạn. Và bây giờ nó hoạt động ...
anna_manzhula

4

Đây là cách tôi giải quyết vấn đề này:

Đầu tiên bạn phải lấy giá trị SHA-1. Cho rằng có hai cách.

Để nhận giá trị SHA-1 trong Android Studio.

  1. Nhấn Gradle
  2. Nhấp vào Báo cáo ký
  3. Sao chép giá trị SHA-1

HOẶC LÀ

Để lấy giá trị SHA-1 từ tệp kho khóa .

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

Sao chép giá trị SHA-1 vào khay nhớ tạm của bạn như thế này:

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

Và mở Hexadecimal -> Bộ giải mã chuỗi Base64 để chuyển đổi giá trị SHA-1 của bạn thành Base64.

Đây là những gì Facebook yêu cầu.

Nhận hàm băm được tạo ra "****** / TÌM HIỂU" và sao chép mã băm chính vào ứng dụng Facebook.


3

Tôi đã có cùng một vấn đề. Đầu tiên đăng nhập, tốt thôi, nhưng sau đó, băm khóa không hợp lệ.

SDK Facebook cho Unity bị băm khóa sai. Nó nhận được khóa từ "C: \ Users \" người dùng của bạn ".android \ debug.keystore" và, trong một thế giới hoàn hảo, nó sẽ lấy nó từ kho khóa mà bạn đã tạo trong dự án của mình. Đó là lý do tại sao nó nói với bạn rằng băm khóa không được đăng ký.

Theo đề xuất của Madi , bạn có thể làm theo các bước trên liên kết này để tìm đúng khóa. Chỉ cần đảm bảo trỏ chúng vào kho khóa bên trong dự án của bạn. Nếu không, bạn sẽ không nhận được đúng chìa khóa.


3

Đoạn mã sau sẽ cung cấp cho bạn hàm băm của bạn cho Facebook, nhưng bạn phải làm theo các bước sau để có được hàm băm ứng viên phát hành.

  1. Sao chép và dán mã này vào hoạt động chính của bạ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. Tạo một tệp APK đã ký .

  3. Kết nối điện thoại của bạn với máy tính xách tay và đảm bảo điện thoại vẫn được kết nối.
  4. Cài đặt và chạy tệp APK trong điện thoại của bạn bằng cách di chuyển thủ công APK phát hành sang điện thoại của bạn.
  5. Bây giờ hãy xem Android LogCat (sử dụng bộ lọc KeyHash :) . Bạn sẽ thấy khóa băm phát hành của mình cho Facebook. Chỉ cần sao chép và dán nó vàohttps://developers.facebook.com/apps . Nó đang được cài đặt.
  6. Bây giờ bạn có thể kiểm tra ứng dụng nên nó hoạt động hoàn hảo.

lưu ý mã chỉ hoạt động nếu bạn tạo apk đã ký. nếu không, nó sẽ chỉ cung cấp cho bạn gỡ lỗi apk băm vô dụng cho apk được phát hành
abdul jalil

Xin chào.
Deepak

2

Sau một thời gian dài nghiên cứu, chúng tôi tìm thấy một giải pháp.

Chúng tôi đã đặt quyền là:

loginButton.setReadPermissions(public_profile email);

Điều này hoạt động lần đầu tiên, nhưng khi chúng tôi đăng nhập lại vào Facebook, nó đã đưa ra Lỗi Hash không hợp lệ .

Giải pháp đơn giản là thay đổi dòng trên thành:

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

Và nó hoạt động như một niềm hạnh phúc!

Facebook nên trả lại ngoại lệ chính xác thay vì lỗi khóa băm không hợp lệ sai.


Tôi có cùng một vấn đề. Tôi đã thử giải pháp của bạn nhưng vẫn không thể giải quyết vấn đề của tôi @ user3663906
BekaKK

2

Sau rất nhiều thử nghiệm, tôi vấp phải một giải pháp cho vấn đề này. Tôi đã tạo và thêm cả khóa gỡ lỗi và giải phóng vào bảng điều khiển dành cho nhà phát triển của Facebook và vẫn gặp lỗi.

Giải pháp duy nhất hiệu quả với tôi là gỡ cài đặt chương trình OpenSSL từ Google và tải xuống từ Trình cài đặt OpenSSL Win32 / Win64 cho Windows

Nó thực sự hoạt động như ma thuật.


2

Mặc dù câu hỏi này đã được trả lời bằng rất nhiều cách hữu ích, tôi chỉ muốn thêm rằng khi tôi làm theo câu trả lời của Rafal Maleks (sử dụng các phím băm trên Google Play Console), tôi vẫn KHÔNG thể sử dụng khóa SHA1 khi ký ứng dụng lỗi từ Facebook. Thay vào đó, tôi cần sử dụng dấu vân tay chứng chỉ SHA-1 từ phần Chứng chỉ tải lên (ngay bên dưới phần Ký ứng dụng trên Google Play Console). Cùng một quy trình khác;

  1. Sao chép dấu vân tay chứng chỉ SHA-1 từ phần Chứng chỉ tải lên trong Google Play Console

  2. Chuyển đổi SHA-1 bằng cách sử dụng: http://tomeko.net/online_tools/hex_to_base64.php và sao chép đầu ra (base64)

  3. Dán nó vào đầu vào Băm khóa trên developer.facebook.com và lưu các thay đổi.

Hy vọng rằng câu trả lời này không thừa và sẽ giúp ai đó không thể làm việc với chứng chỉ Ký ứng dụng.

Bây giờ, đăng nhập Facebook hoạt động trong ứng dụng của tôi cả ở chế độ gỡ lỗi và phát hành.


1

Dán đoạn mã sau vào phương thức OnCreate của bạ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();
}

Chỉ cần sửa đổi tên gói. Sau đó vào tệp LogCat của bạn và chọn Tìm kiếm gỡ lỗi tại đây. Sau đó, bạn sẽ tìm thấy khóa băm. Bây giờ sao chép khóa băm này và sau đó truy cập trang web developer.facebook.app_id, chỉnh sửa khóa băm của bạn và nhấn Save. Bây giờ chạy lại dự án Android của bạn. Tôi nghĩ vấn đề sẽ được giải quyết.


7
nhắc lại anh chàng kia
Beto Caldas

1

Điều này có thể giúp một người có cùng vấn đề.

  1. Tạo mã băm bằng cách sử dụng mã dưới đây

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

    Cách sử dụng keytool

  2. Dán nó vào trường bắt buộc trong nhà phát triển Facebook

  3. Trong Android Studio, menu TệpCấu trúc dự án

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

    Thêm tham số ký.

  4. Chọn hương vị

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

    Chọn cấu hình ký chúng tôi đã tạo.

  5. Chọn kiểu xây dựng

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

  6. Chọn biến thể xây dựng và xây dựng nó

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


1

Tôi đã có cùng một vấn đề khi tôi gỡ lỗi ứng dụng của tôi. Tôi đã viết lại hàm băm mà bạn đã gạch bỏ trong hình ảnh đính kèm (hình mà Facebook nói là không hợp lệ) và thêm nó vào bảng điều khiển dành cho nhà phát triển của Facebook để băm khóa. Chỉ cần cẩn thận lỗi chính tả.

Giải pháp này giống như một cách giải quyết dễ dàng hơn là một giải pháp thích hợp.


1

Nếu bạn đang gõ keyhash theo cách thủ công (ví dụ: từ thiết bị di động đến Bảng điều khiển Facebook), hãy đảm bảo phân biệt giữa chữ L nhỏ và chữ I.


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

Những gì Facebook sử dụng không phải là mật khẩu và bí danh mặc định để gỡ lỗi. Bạn cần thay đổi nó sau đây và nó sẽ hoạt động.

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

Nếu bạn không thay đổi bất cứ điều gì với mật khẩu mặc định thì đó phải là "android" .

Bạn cũng có thể cấu hình nó trong tệp build.gradle. Nhưng mật khẩu bí danh tương tự nên được sử dụng để tạo hàm băm:

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

0

Dưới đây là rất nhiều câu trả lời đúng. Một điều nữa thôi:

Dán băm nhận được vào Ứng dụngCài đặtChính , không qua hướng dẫn bắt đầu nhanh.


0

Tôi đã từng gặp vấn đề tương tự.

Đảm bảo rằng bạn xây dựng tệp APK với cùng một thiết bị đã tạo ra hàm băm được lưu trữ trong phần nhà phát triển của Facebook.


0

Tôi đã sửa lỗi này bằng cách thêm vào như sau 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");
}

Sau đó, tôi đã tải nó lên bảng điều khiển dành cho nhà phát triển của Google và sau đó tải xuống APK có nguồn gốc , vì lý do nào đó, có hàm băm hoàn toàn khác.

Sau đó, tôi đã sử dụng LogCat để xác định hàm băm mới và thêm nó vào Facebook như những người dùng khác đã phác thảo.


0

Nếu bạn đang tạo băm khóa phát hành, hãy đảm bảo bạn nhập mật khẩu thực tế của kho khóa của mình chứ không phải "android".

Đây là vấn đề của tôi. Bản phát hành gỡ lỗi đã hoạt động, nhưng APK phát hành thì không.


-1

Sử dụng mã dưới đây trong phương thức onCreate () của hoạt động của bạ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) {
}

Chạy mã này. Điều này sẽ tạo ra khóa băm. Sao chép KeyHash này trong cài đặt ứng dụng Facebook và lưu các thay đổi. Sau đó đăng nhập vào ứng dụng của bạn. Điều này sẽ làm việc hoàn hảo trong tương lai quá.


3
nhắc lại anh chàng kia
Beto Caldas
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.