Facebook Android สร้าง Key Hash


119

พยายามสร้างแอป Android ด้วยการรวม Facebook ฉันได้รับส่วนหนึ่งในเอกสารที่คุณต้องสร้างไฟล์แฮชที่สำคัญโดยระบุให้เรียกใช้รหัสต่อไปนี้

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

เมื่อฉันเรียกใช้สิ่งนี้ในเทอร์มินัลของฉันฉันได้รับข้อผิดพลาดว่า Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้อง

ฉันแค่ต้องการสร้าง Key Hash ของฉัน

ใครช่วยชี้ทางที่ถูกต้องให้ฉันได้ไหม


2
คุณใช้รหัสผ่านที่ถูกต้องหรือไม่?
ประธาน James K. Polk

เมื่อป้อนคำสั่งในเทอร์มินัลมันไม่ได้ให้ตัวเลือกในการป้อนรหัสผ่านแก่ฉัน
Scott

ลองป้อนเพียงคำสั่ง keytool โดยไม่มีสองท่อสุดท้าย
ประธาน James K. Polk

6
ฉันเข้าใจแล้วฉันเป็นคนโง่บางครั้งป้อนคำสั่งในบรรทัดทั้งหมดอย่าคัดลอกและวาง
Scott

คำตอบ:


20

ลบใบรับรองการดีบักของคุณภายใต้ ~ / .android / debug.keystore (บน Linux และ Mac OS X); ไดเร็กทอรีคือ% USERHOME% /. android บน Windows

จากนั้นปลั๊กอิน Eclipse ควรสร้างใบรับรองใหม่เมื่อคุณพยายามสร้างแพ็กเกจดีบักในครั้งต่อไป

แจ้งให้เราทราบหากได้ผล


ไม่ได้ผล ลบไฟล์ debug.keystore ทำ debug build ไฟล์ไม่กลับมา สังเกตสิ่งอื่นในโฟลเดอร์นั้นได้รับการอัปเดต
CthulhuJon

3
ฉันไม่รู้จริงๆว่านี่เป็นคำตอบที่ยอมรับได้อย่างไร?
Enoobong

สร้าง HashKey สำหรับโหมด debug และ release โดยใช้สิ่งนี้ stackoverflow.com/questions/7506392/…
Naeem Ibrahim

281

ในการสร้างคีย์แฮชคุณต้องทำตามขั้นตอนง่ายๆ

1) ดาวน์โหลด Openssl จาก: ที่นี่

2) สร้างโฟลเดอร์opensslในไดรฟ์C

3) แตกไฟล์ Zip ลงในโฟลเดอร์openssl ที่สร้างขึ้นในC Drive

4) คัดลอก File debug.keystoreจากโฟลเดอร์. androidในกรณีของฉัน (C: \ Users \ SYSTEM.android) และวางลงในโฟลเดอร์ถังขยะ JDK ในกรณีของฉัน (C: \ Program Files \ Java \ jdk1.6.0_05 \ bin)

5) เปิดพรอมต์คำสั่งและระบุเส้นทางของโฟลเดอร์ JDK Bin ในกรณีของฉัน (C: \ Program Files \ Java \ jdk1.6.0_05 \ bin)

6) คัดลอกรหัสต่อไปนี้และกด Enter

keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c: \ openssl \ bin \ debug.txt

7) ตอนนี้คุณต้องป้อนรหัสผ่านรหัสผ่าน = android

8) หากคุณเห็นในโฟลเดอร์openssl Bin คุณจะได้ไฟล์ที่มีชื่อdebug.txt

9) ตอนนี้คุณสามารถรีสตาร์ทพร้อมรับคำสั่งหรือทำงานกับพรอมต์คำสั่งที่มีอยู่

10) กลับไปที่ไดรฟ์ C และระบุเส้นทางของโฟลเดอร์openssl Bin

11) คัดลอกรหัสต่อไปนี้และวาง

openssl sha1 -binary debug.txt> debug_sha.txt

12) คุณจะได้รับdebug_sha.txtในโฟลเดอร์ถังขยะ openssl

13) คัดลอกรหัสต่อไปนี้อีกครั้งและวาง

openssl base64 -in debug_sha.txt> debug_base64.txt

14) คุณจะได้รับdebug_base64.txtในโฟลเดอร์ถังขยะ openssl

15) เปิดไฟล์debug_base64.txtนี่คือแฮชคีย์ของคุณ


4
คำตอบที่ดี +1 สำหรับคุณฉันทำตามสิ่งนี้และได้ผลลัพธ์ที่ต้องการ :)
BBdev

ฉันได้รับสิ่งนี้: keytool error: java.io.IOException: Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้องฉันจะค้นหารหัสผ่านที่ถูกต้องได้อย่างไร?
DuyguK

สิ่งนี้ได้ผลสำหรับฉันหลังจาก 2 วันแห่งความสับสนว่าเกิดอะไรขึ้น ยอดเยี่ยมมาก!
rennoDeniro

4
@Vizzz: วิธีที่ดีในการอธิบายการสร้างแฮชที่สำคัญ ขอบคุณสำหรับโพสต์นี้หวังว่าโพสต์นี้จะช่วยประหยัดเวลาได้มาก
Emran Hamza

1
ฉันลองทุกรหัส แต่ไม่ได้ผลลัพธ์ที่ต้องการ ฉันลองใช้รหัสจาก facebook มันก็เหมือนกันเพียงแค่ทั้งสามคำสั่งในคำสั่งเดียว แต่การเรียกใช้สามคำสั่งแยกกันทำให้รหัสที่ถูกต้องและใช้งานได้ชั่วโมงในการค้นหาหรืออาจจะเป็นวันในการค้นหา ขอบคุณ ก่อนหน้านี้มีเพียงรหัสบนแอป Android เท่านั้นที่ให้ผลลัพธ์ที่ถูกต้องพรอมต์คำสั่งให้คีย์ที่ไม่ถูกต้องตอนนี้ทุกอย่างเรียบร้อยดี ขอขอบคุณอีกครั้ง
Diljeet

149

คำตอบที่อัปเดต (สร้างผ่านรหัส) วิธีที่ง่ายกว่า:

จากประสบการณ์ของฉัน openssl มักจะลำบากฉันลองวิธีที่สองที่แนะนำโดย facebook และมันวิเศษมาก นี่เป็นวิธีที่ดีที่สุดในการรับคีย์แฮช

ตัวเลือกที่สองคือพิมพ์แฮชคีย์ที่ส่งไปยัง Facebook และใช้ค่านั้น ทำการเปลี่ยนแปลงต่อไปนี้กับเมธอด onCreate () ในกิจกรรมหลักของคุณ:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.facebook.samples.loginhowto", 
                    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) {

        }
        ...other operations

}//end of onCreate

แทนที่ com.facebook.samples.loginhowto ด้วยชื่อแพ็กเกจของคุณเอง (ชื่อแพ็กเกจใน Manifest.xml)

ลิงก์อย่างเป็นทางการ - https://developers.facebook.com/docs/android/login-with-facebook/ (ดูด้านล่างของหน้า)

คำตอบเก่า (การสร้าง Keyhash โดยใช้ openssl)

  1. ในการสร้างลายเซ็นคุณต้องติดตั้ง openssl บนพีซีของคุณ หากคุณไม่มีการดาวน์โหลด openssl จากที่นี่
  2. ใน C: สร้างopensslโฟลเดอร์
  3. แตกเนื้อหาของไฟล์ zip openssl ที่ดาวน์โหลดมาopensslไว้ในโฟลเดอร์ในC:ไดรฟ์
  4. เปิดพรอมต์คำสั่ง
  5. ย้ายไปbinของopenssl IE C:\openssl\binในพร้อมรับคำสั่ง
  6. รันคำสั่งต่อไปนี้เพื่อสร้างคีย์แฮชของคุณ ในขณะที่สร้างแฮชคีย์ควรถามรหัสผ่านจากคุณ

    keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ Anhsirk.android \ debug.keystore" | openssl sha1 - ไบนารี | openssl base64

หมายเหตุ : ในโค้ดด้านบนโปรดทราบว่าคุณต้องให้เส้นทางของคุณไปยังผู้ใช้ (เช่นในกรณีของฉันคือ C: \ Users \ Anhsirk คุณเพียงแค่ต้องเปลี่ยนสิ่งนี้สำหรับบัญชีผู้ใช้ของคุณ

ให้รหัสผ่านเป็นAndroid

. หากไม่ขอรหัสผ่านเส้นทางที่เก็บคีย์ของคุณไม่ถูกต้อง

หากทุกอย่างทำงานได้ดีควรให้แฮชคีย์ด้านล่าง

ใส่คำอธิบายภาพที่นี่


ฉันได้รับสิ่งนี้: keytool error: java.io.IOException: Keystore ถูกดัดแปลงหรือรหัสผ่านไม่ถูกต้องฉันจะค้นหารหัสผ่านที่ถูกต้องได้อย่างไร?
DuyguK

@DuyguK - อาจหมายความว่าคีย์สโตร์ของคุณมีอยู่แล้ว ลองลบและทำซ้ำ หรือเส้นทางที่คุณอาจระบุผิด
AnhSirk Dasarp

พระเจ้านี่ฉันใช้เวลาหลายชั่วโมง ขอบคุณมาก!
เย็น

ฉันต้องการถามว่าวิธีการใหม่ (รับการคีย์แฮชตามรหัส) ทำให้กระบวนการ onCreate ช้าลงหรือไม่ เพราะจากสิ่งที่ฉันรู้เมื่อสร้าง APK ที่ลงชื่อแล้วการคีย์แฮชจึงแตกต่างกัน ขอบคุณสำหรับรหัสอย่างไรก็ตาม! :)
marson

วิธีที่ง่ายกว่านี้จะทำงานได้โดยไม่ต้องใช้โปรแกรมจำลอง แต่ใช้กับอุปกรณ์ Android จริงหรือ

24

วิธีที่ง่ายที่สุดในการสร้างแฮชคีย์

ความต้องการ: คีย์ SHA1

คุณสามารถรับคีย์ SHA1 จากไฟล์ที่เก็บคีย์ของคุณได้สองวิธี

1)ค้นหาไฟล์ที่เก็บคีย์ของคุณเปิดพรอมต์คำสั่งในตำแหน่งนั้นจากนั้นใช้คำสั่งที่กล่าวถึงด้านล่าง

keytool -list -v -keystore {keystore_name} -alias {alias_name}

จากนั้นป้อนรหัสผ่านของคุณจากนั้นจะส่งคืนคีย์ md5, sha1 และ sha256

หรือ

2)โดยเรียกใช้signReport

ดูภาพด้านล่าง

ใส่คำอธิบายภาพที่นี่

หลังจากที่คุณเรียกใช้ไฟล์ผลลัพธ์ของคุณจะถูกสร้างขึ้นโดยมีคีย์ sha1 ที่จำเป็น

ใส่คำอธิบายภาพที่นี่

หลังจากที่คุณได้รับคีย์ SHA1 ที่ต้องการแล้ว

แล้ว goto

http://tomeko.net/online_tools/hex_to_base64.php

และวางคีย์ sha1 ของคุณ

ใส่คำอธิบายภาพที่นี่

และสุดท้ายคุณจะได้รับ HashKey ที่จำเป็นซึ่งคุณสามารถใช้เพื่อสมัครบน Facebook ได้


2
คำตอบนี้ง่ายกว่าคำตอบอื่น ๆ มากเนื่องจากใส่ใจเฉพาะผลลัพธ์สุดท้ายเท่านั้น ถูกต้องเสมอ. ในกรณีอื่น ๆ หากกำหนดค่าขั้นตอนการลงนามไม่ถูกต้องเราจะไม่ทราบวิธีแก้ไข
hakuna1811

1
งานเจ๋งเหมือนมีเสน่ห์ขอบคุณเพื่อน
Dheeraj Jaiswal

14

สามารถรับคีย์ที่ถูกต้องได้จากแอพเองโดยการเพิ่มรหัสต่อไปนี้เพื่อปิ้งแฮชคีย์ที่เหมาะสม (ในกรณีของ Facebook SDK 3.0 เป็นต้นไปจะใช้งานได้)

try {
            PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage",         PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("MY KEY HASH:", sign);
                Toast.makeText(getApplicationContext(),sign,         Toast.LENGTH_LONG).show();
            }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

แทนที่ com.package.mypackage ด้วยชื่อแพ็กเกจของคุณ


สร้าง HashKey สำหรับโหมด debug และ release โดยใช้สิ่งนี้ stackoverflow.com/questions/7506392/…
Naeem Ibrahim

12

I. สร้างคีย์แฮชดีบักสำหรับ Facebook

เพิ่มรหัสเพื่อพิมพ์แฮชคีย์สำหรับ facebook

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.google.shoppingvn", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.i("KeyHash:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

ครั้งที่สอง สร้างการปล่อยแฮชที่สำคัญสำหรับ Facebook

  1. ดาวน์โหลดopenssl-0.9.8e_X64

  2. สร้างโฟลเดอร์ openssl ในไดรฟ์ C

  3. แตกไฟล์ Zip ลงในโฟลเดอร์ openssl

  4. เริ่ม -> เรียกใช้: cmd (กด Enter)

  5. (กด) cd C: \ Program Files \ Java \ jdk1.6.0_45 \ bin หมายเหตุ: C: \ Program Files \ Java \ jdk1.6.0_45 \ bin: คือพา ธ ไปยังโฟลเดอร์ jdk ในคอมพิวเตอร์ของคุณ

  6. (กด) keytool -exportcert -alias gci -keystore D: \ folder \ keystorerelease | C: \ openssl \ bin \ openssl sha1 - ไบนารี | C: \ openssl \ bin \ openssl base64 หมายเหตุ: D: \ folder \ keystorerelease: คือพา ธ ไปยัง keystorerelease ของคุณ

  7. ป้อนรหัสผ่านที่เก็บคีย์: นี่คือรหัสผ่านเมื่อคุณลงทะเบียนคีย์สโตร์รีลีส

    จากนั้นคุณจะมีแฮชที่สำคัญ: jDehABCDIQEDWAYz5Ow4sjsxLSw =

  8. เข้าสู่ระบบ facebook เข้าถึงจัดการแอพ วางคีย์แฮชลงในแอปของคุณใน developers.facebook.com


สร้าง HashKey สำหรับโหมด debug และ release โดยใช้สิ่งนี้ stackoverflow.com/questions/7506392/…
Naeem Ibrahim

9

วิธีแก้ปัญหาที่ง่ายที่สุดสำหรับปัญหานี้:

ฉันมีปัญหานี้มาสองเดือนแล้ว แฮชคีย์ของฉันมีจำนวนมากถึง 9 ในที่สุดวันนี้ฉันก็พบวิธีง่ายๆ:

ขั้นตอนที่ 1:

ติดตั้ง facebook sdk ที่คุณดาวน์โหลดจากหน้านักพัฒนา facebook บนโทรศัพท์ของคุณ อย่าติดตั้งแอพ facebook ปกติ ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าสู่ระบบ facebook ได้ จากนั้นออกจากระบบ

ขั้นตอนที่ 2:

ส่งออกแอปของคุณด้วยรหัสรุ่นสุดท้ายเป็น apk เช่นเดียวกับที่คุณทำเมื่ออัปโหลดไปยัง playstore

ขั้นตอนที่ 3:

ใส่ไฟล์ Apk ในโทรศัพท์ของคุณผ่านสาย usb หรือแท่ง usb

ขั้นตอนที่ 4:

ติดตั้งแอปของคุณโดยใช้ตัวจัดการไฟล์: ตัวอย่าง

ขั้นตอนที่ 5:

เปิดแอพของคุณและพยายามเข้าสู่ระบบด้วย facebook กล่องโต้ตอบจะเปิดขึ้นและแจ้งให้คุณทราบ: "ไม่พบคีย์ YOURHASHKEY ในคอนโซลนักพัฒนาซอฟต์แวร์ของ Facebook"

ขั้นตอนที่ 6:

จดคีย์.

ขั้นตอนที่ 7:

ใส่ลงในคอนโซลนักพัฒนา Facebook ของคุณและบันทึก ตอนนี้คุณทำเสร็จแล้ว ใครก็ตามที่ดาวน์โหลดแอปของคุณซึ่งเผยแพร่ด้วยคีย์สโตร์ที่ใช้ก่อนหน้านี้สามารถเข้าสู่ระบบ facebook ได้

สนุก


หมายเหตุ: คุณต้องใส่ '=' หลังจากคีย์ที่คัดลอกมาจากบันทึก
akshay7692

7

หากคุณกำลังปล่อยให้ใช้ที่เก็บคีย์ที่คุณใช้ในการส่งออกแอปของคุณด้วยไม่ใช่ debug.keystore


1
สวัสดีฉันได้ลองใช้ที่เก็บคีย์ของแอปพลิเคชันเพื่อสร้างคีย์แฮชแล้ว แต่เมื่อใดก็ตามที่ฉันพยายามแบ่งปันอะไรจากแอปพลิเคชันของฉันมันทำให้ฉันเกิดข้อผิดพลาดว่าแอปพลิเคชันถูกกำหนดค่าไม่ถูกต้องสำหรับการเข้าสู่ระบบ Facebook แต่เมื่อฉันลอง keyhash ที่สร้างผ่าน debug.keystore มันใช้งานได้ คุณช่วยฉันเรื่องนี้ได้ไหม
KunalK


6

ในที่สุด :)

นี่คือเรื่องราวของฉัน:

  1. เพิ่มรหัสนี้ในกิจกรรมหลักของคุณหลังจากที่คุณกำหนดรูปแบบ

    try { 
      PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES);
      for (Signature signature : info.signatures) {
          MessageDigest md = MessageDigest.getInstance("SHA");
          md.update(signature.toByteArray());
          String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
          Log.e("MY KEY HASH:", sign);
          //textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
          //textInstructionsOrLink.setText(sign);
          Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
      }
    } catch (NameNotFoundException e) {
        Log.d("nope","nope");
    } catch (NoSuchAlgorithmException e) {
    }
  2. เปลี่ยน PROJECTNAME เป็นชื่อแพ็กเกจของคุณ!

  3. ลงนามแอปของคุณ (เครื่องมือ Android -> ส่งออกแอปพลิเคชันที่ลงชื่อ)
  4. ในกิจกรรมหลักของคุณที่คุณวางโค้ดจาก 2 ตัวเลือกในเลย์เอาต์ของคุณให้สร้าง TextView ด้วย id textstring
  5. ไม่ใส่เครื่องหมายสองบรรทัดว่ารหัสเซ็นของคุณจะถูกตั้งค่าเป็น TextView 6 Wuolia คุณมี HASH ติดตั้งแอปบนโทรศัพท์ของคุณ !!! และตรวจสอบแฮชคีย์ของคุณ!
  6. เมื่อมองเห็นได้แล้วให้ไปที่แอพ Facebook ที่คุณสร้างขึ้นและเพิ่มลงใน [Key Hashes]
  7. โปรดทราบว่าชื่อแพ็กเกจของคุณควรจะเหมือนกับบน facebook [ชื่อแพ็กเกจ] ภายใต้ [Key Hashes]
  8. ขอให้เป็นวันที่ดี :)


4

ในการสร้างแฮชคีย์รุ่นคุณต้องทำตามขั้นตอนง่ายๆ

1) ดาวน์โหลดOpenssl

2) สร้างโฟลเดอร์ openssl ในไดรฟ์ C

3) แตกไฟล์ Zip ลงในโฟลเดอร์ openssl ที่สร้างขึ้นใน C Drive

4) คัดลอก File debug.keystore จากโฟลเดอร์. android ในกรณีของฉัน (C: \ Users \ SYSTEM.android) และวางลงในโฟลเดอร์ถังขยะ JDK ในกรณีของฉัน (C: \ Program Files \ Java \ jdk1.6.0_05 \ bin)

5) เปิดพรอมต์คำสั่งและระบุเส้นทางของโฟลเดอร์ JDK Bin ในกรณีของฉัน (C: \ Program Files \ Java \ jdk1.7.0_40 \ bin)

6) คัดลอกรหัสต่อไปนี้และกด Enter

keytool -exportcert -alias abcd-keystore D: \ Projects \ MyAppFolder \ keystore.txt | C: \ openssl \ bin \ openssl sha1 - ไบนารี | C: \ openssl \ bin \ openssl base64 ex - keytool -exportcert -alias (ชื่อนามแฝง apk ของคุณให้ป้อนที่นี่เช่นชื่อนามแฝง apk ของฉันคือ abcd) -keystore "ลงนาม apk ที่เก็บคีย์ที่สร้างขึ้นให้ป้อนที่นี่" | "openssl bin เส้นทางโฟลเดอร์เข้าที่นี่" sha1 - ไบนารี | "openssl bin เส้นทางโฟลเดอร์เข้าที่นี่" base64

7) ตอนนี้คุณต้องป้อนรหัสผ่านรหัสผ่าน = (ป้อนรหัสผ่านที่เก็บคีย์ของคุณที่นี่)

8) คุณมีที่เก็บคีย์ซึ่งใช้สำหรับแฮชคีย์ของแอปรีลีส


3

แม้ว่ากระทู้นี้จะเก่า แต่ฉันก็อยากจะแบ่งปันประสบการณ์ของฉัน (เพิ่งเริ่มทำงานกับ facebook) ซึ่งดูเหมือนว่าฉันจะตรง:

  1. ดาวน์โหลด openssl จากลิงค์ด้านล่าง: https://code.google.com/p/openssl-for-windows/downloads/list
  2. แตกไฟล์ลงในไดรฟ์ภายในเครื่อง (เช่น C: \ openssl)
  3. ในการรับคีย์การพัฒนาสำหรับการรวม facebook ให้ใช้คำสั่งต่อไปนี้จากบรรทัดคำสั่งใน windows:

    keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | "C: \ openssl \ bin \ openssl.exe" sha1 -binary | "C: \ openssl \ bin \ openssl.exe" base64

หมายเหตุ!: โปรดเปลี่ยนเส้นทางสำหรับ openssl.exe (ในตัวอย่างนี้คือ "C: \ openssl \ bin \ openssl.exe") ด้วยเส้นทางการติดตั้งของคุณเอง

  1. มันจะแจ้งให้ใส่รหัสผ่านเช่น

ป้อนรหัสผ่านที่เก็บคีย์: android

พิมพ์ android เป็นรหัสผ่านตามที่แสดงด้านบน

แค่นั้นแหละ! คุณจะได้รับคีย์ยาว 28 อักขระ ไชโย!

ใช้ขั้นตอนเดียวกันเพื่อรับคีย์ Release เพียงแทนที่คำสั่งดังต่อไปนี้และใช้นามแฝงคีย์รีลีสของคุณ

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS - ที่เก็บคีย์ YOUR_RELEASE_KEY_PATH | "PATH FOR openssl.exe" sha1 -binary | openssl base64


แต่มันแสดงการถามรหัสผ่านและให้รหัสผ่านที่เก็บคีย์ที่ลงนามแล้วแสดง chines laungauge
Harsha

ตรวจสอบให้แน่ใจว่าเส้นทางถูกตั้งค่าอย่างถูกต้องสำหรับ openssl \ bin และ java ... \ bin
KawaiKx

3

สร้างคีย์แฮชการแก้ไขข้อบกพร่อง

  public String hashkey(Context context) {
        String keyhash = "";
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
                keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
        return keyhash;
    }

สร้างคีย์แฮชรุ่น

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64

2

โพสต์บล็อกที่ยอดเยี่ยมในเรื่องนี้

การแยก Key Hash จากคีย์. p12

  1. เปิด Terminal หรือ Command line แล้วไปที่คีย์. p12 ของคุณ
  2. พิมพ์:“ keytool -v -list -keystore mycert.p12 -storetype pkcs12″ โดย mycert.p12 คือชื่อไฟล์ของคีย์. p12 ของคุณ
  3. ป้อนรหัสผ่านที่เก็บคีย์ (รหัสที่คุณใช้เมื่อส่งออกคีย์. p12) 4. คัดลอกข้อความไบต์ลายเซ็นลายนิ้วมือ sha1
  4. ต้องใช้ไบต์ที่ลายนิ้วมือ sha1 เพื่อเขียนไฟล์“ sha1.bin” คุณสามารถใช้โปรแกรมแก้ไขเลขฐานสิบหกเพื่อวางไบต์ที่คุณคัดลอก หลังจากนั้นบันทึกไฟล์เป็น“ sha1.bin”
  5. เปิดเทอร์มินัลอีกครั้งแล้วพิมพ์:“ openssl base64 -in sha1.bin -out base64.txt”
  6. "base64.txt" ที่ได้จะมี Key Hash ที่จำเป็นสำหรับ Facebook

โปรแกรมแก้ไขเลขฐานสิบหกที่ยอดเยี่ยมและเรียบง่ายสำหรับ mac: HexFiend

ควรติดตั้ง OpenSSL ไว้ล่วงหน้าบน mac และนี่คือลิงค์สำหรับเวอร์ชัน Windows

ลิงค์


นี่เป็นข้อมูลที่ดีสำหรับนักพัฒนาแอป Adobe AIR (Flash หรือ Apache Flex) และ "ชื่อคลาส" สำหรับ Facebook SSO ควรเป็นAppEntry
Alexander Farber

2

ลองส่งรหัสผ่านสำหรับคีย์และจัดเก็บเป็นส่วนหนึ่งของคำสั่ง

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

1

ฉันสามารถทำงานตามที่ร้องขอได้ด้วยวิธีแก้ปัญหาบางอย่างที่นี่ แต่คิดกับตัวเองว่าเด็กโง่ ... ทำไมไม่เขียนโค้ด Java ขนาดเล็กที่ทำสิ่งนี้และบรรจุลงใน Jar ฉันก็เลยทำ ..

ลิงค์ดาวน์โหลดไห

ทำงานบน Windows 8 ... ไม่ได้ลองใช้ระบบปฏิบัติการอื่น


1
สิ่งที่ฉันไม่เข้าใจคือถ้าฉันใช้เวลาสองสามชั่วโมงในการเรียนรู้ทั้งหมดและร่างสิ่งนี้ขึ้นมาทำไมไม่มี บริษัท ใหญ่ ๆ ทำสิ่งนี้แล้วเพื่อให้เราได้รับข้อมูลที่พวกเขาขอจากเราอย่างง่ายดาย ???
TacB0sS

1

สวัสดีทุกคนเรื่องราวของฉันวิธีการเซ็นชื่อมีกุญแจสำคัญสำหรับ Facebook

ก่อนอื่นคุณเพียงแค่คัดลอก 2 วิธีนี้ในชั้นเรียนแรกของคุณ

    private void getAppKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), 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));
            System.out.println("HASH  " + something);
            showSignedHashKey(something);

        }
    } catch (NameNotFoundException e1) {
        // TODO Auto-generated catch block
        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());
    }
}
public void showSignedHashKey(String hashKey) {

    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    adb.setTitle("Note Signed Hash Key");
    adb.setMessage(hashKey);
    adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    adb.show();
}

** เรียก funcation getAppKeyHash () จากโปรแกรม oncreate ของคุณหากคุณต้องการแฮชที่ลงนามจากนั้นทำการเซ็นชื่อติดตั้งบิลด์และรันคุณจะได้รับคีย์แฮชในกล่องโต้ตอบจากนั้นจดบันทึกและอัปเดตในบัญชีผู้พัฒนา Facebook และแสดงความคิดเห็นจากฟังก์ชันนั้นและสร้างใหม่ APK ที่ลงนาม **


1

หากรหัสผ่าน = android ของคุณผิดให้ใส่รหัสผ่านพีซีของคุณซึ่งมันใช้ได้กับฉัน

และสำหรับการสร้าง keyHash ลองลิงค์นี้ที่นี่


0

androidสิ่งเดียวที่ทำงานสำหรับฉันคือการใช้รหัสผ่าน เหตุใดจึงไม่มีการกล่าวถึงในคู่มือใด ๆ


0

ใช้สิ่งนี้ใน kotlin สำหรับแฮชคีย์การพิมพ์ในบันทึก

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

    }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.