จากปลั๊กอินเวอร์ชัน 6.0.0 เวอร์ชัน Cordova-ios ขั้นต่ำที่ต้องการคือ 4.5.0 จำเป็นต้องใช้เวอร์ชัน Cordova-ios ที่ต่ำกว่าหรือไม่ ใช้ปลั๊กอินเวอร์ชัน 5.3.2 หรือต่ำกว่า
idToken
serverAuthCode
ปลั๊กอินนี้ช่วยให้คุณตรวจสอบสิทธิ์และระบุผู้ใช้ด้วยการลงชื่อเข้าใช้ Google บน iOS และ Android เมื่อแกะกล่อง คุณจะได้รับอีเมล ชื่อที่แสดง ชื่อ นามสกุล URL รูปโปรไฟล์ และรหัสผู้ใช้ คุณยังสามารถกำหนดค่าให้รับ idToken และ serverAuthCode ได้ด้วย
ปลั๊กอินนี้จะล้อมการเข้าถึง Google Sign-In API เท่านั้น ควรมีการนำการเข้าถึง API เพิ่มเติมไปใช้ต่อกรณีการใช้งาน ต่อนักพัฒนา
หุ่นยนต์
ไอโอเอส
หากต้องการสื่อสารกับ Google คุณต้องตั้งค่าที่น่าเบื่อ ขออภัย
ขอแนะนำ (อย่างยิ่ง) ให้คุณใช้โปรเจ็กต์เดียวกันสำหรับทั้ง iOS และ Android
ไปที่ config.xml
ของคุณและตรวจสอบให้แน่ใจว่าชื่อแพ็คเกจของคุณ (เช่น รหัสแอป) เป็นสิ่งที่คุณต้องการให้เป็น ใช้ชื่อแพ็คเกจนี้เมื่อตั้งค่า iOS และ Android ในขั้นตอนต่อไปนี้! หากคุณไม่ทำเช่นนั้น คุณจะได้รับข้อผิดพลาด 12501 'ผู้ใช้ยกเลิก' แม้ว่าจะไม่เคยยกเลิกกระบวนการเข้าสู่ระบบเลยก็ตาม
ขั้นตอนนี้มีความสำคัญ อย่างยิ่ง หากคุณใช้เฟรมเวิร์ก เช่น Ionic เพื่อดำเนินโครงการของคุณ เมื่อคุณสร้างโปรเจ็กต์ config.xml
จะมีชื่อแพ็กเกจตัวยึดตำแหน่ง เช่น com.ionic.* คุณจึงสามารถเริ่มพัฒนาได้ทันที
xml version = ' 1.0 ' encoding = ' utf-8 ' ?>
< widget id = " ** REPLACE THIS VALUE ** " ...>
...
widget >
แพลตฟอร์มเบราว์เซอร์ต้องการ WEB_APPLICATION_CLIENT_ID
ที่ถูกต้องซึ่งสร้างขึ้นที่ Google Developer Console ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มที่อยู่ URL ของคุณ (ตัวอย่าง: http://localhost:3000
) ในส่วน ต้นกำเนิด JavaScript ที่ได้รับอนุญาต ดูภาพหน้าจอนี้เป็นตัวอย่าง
หากต้องการรับ iOS REVERSED_CLIENT_ID
ให้สร้างไฟล์การกำหนดค่าที่นี่ ไฟล์ GoogleService-Info.plist
นี้มี REVERSED_CLIENT_ID
ที่คุณต้องการระหว่างการติดตั้ง ค่านี้จำเป็นสำหรับ iOS เท่านั้น
REVERSED_CLIENT_ID
มีอีกชื่อหนึ่งว่า "iOS URL Scheme" บนคอนโซลของนักพัฒนาซอฟต์แวร์
การเข้าสู่ระบบบน iOS จะนำผู้ใช้ไปที่ SafariViewController ผ่าน Google SDK แทนที่จะเป็นเบราว์เซอร์ Safari ที่แยกต่างหาก
หากต้องการกำหนดค่า Android ให้สร้างไฟล์การกำหนดค่าที่นี่ เปิดใช้งาน Google Sign-In และเพิ่มแอป Android เพื่อเพิ่มลายนิ้วมือ SHA1 เมื่อเปิดใช้งาน Google Sign-In แล้ว Google จะสร้างข้อมูลรับรองที่จำเป็นในแผงควบคุมสำหรับนักพัฒนาซอฟต์แวร์สำหรับเว็บและ Android โดยอัตโนมัติ ไม่จำเป็นต้องเพิ่มไฟล์ google-services.json ที่สร้างขึ้นในโครงการ Cordova ของคุณ คุณอาจต้องกำหนดค่าหน้าจอยินยอม
ตรวจสอบให้แน่ใจว่าคุณดำเนินการขั้นตอน keytool
ตามที่อธิบายไว้ที่นี่ ไม่เช่นนั้นการตรวจสอบสิทธิ์จะล้มเหลว (ทำสิ่งนี้สำหรับทั้งที่เก็บคีย์รีลีสและดีบัก)
สำคัญ:
keytool
แสดงลายนิ้วมือของใบรับรอง 2 ประเภท คือ Release และ Debug เมื่อสร้างไฟล์การกำหนดค่า ควรใช้ลายนิ้วมือของใบรับรอง Debug หลังจากนั้นคุณต้องไปที่ Google Credentials Manager และสร้างด้วยตนเอง ข้อมูลรับรองสำหรับ ไคลเอนต์ OAuth2 ด้วยลายนิ้วมือใบรับรอง การเผยแพร่ ของคุณ นี่เป็นสิ่งจำเป็นสำหรับแอปพลิเคชันของคุณทั้งรุ่นการพัฒนาและรุ่นใช้งานจริง $ keytool -exportcert -keystore -list -v -alias
การเข้าสู่ระบบบน Android จะใช้บัญชีที่ลงชื่อเข้าใช้บนอุปกรณ์ของผู้ใช้
หากต้องการตั้งค่าเวอร์ชันบริการ Google Play คุณสามารถใช้พารามิเตอร์ PLAY_SERVICES_VERSION (โดยค่าเริ่มต้นคือ 11.8.0) มีประโยชน์เพื่อหลีกเลี่ยงความขัดแย้งกับปลั๊กอินอื่นที่ใช้บริการ Google Play เวอร์ชันอื่น เนื่องจากต้องเป็นเวอร์ชันเดียวกัน
Google ลงนามแอปของคุณอีกครั้งด้วยใบรับรองอื่นเมื่อคุณเผยแพร่ใน Play Store เมื่อเผยแพร่แอปแล้ว ให้คัดลอกลายนิ้วมือ SHA-1 ของ "ใบรับรองการลงนามแอป" ซึ่งอยู่ในส่วน "การลงนามแอป" ใต้ "การจัดการการเผยแพร่" ใน Google Play Console วางลายนิ้วมือนี้ใน Release OAuth client ID ในตัวจัดการข้อมูลรับรอง Google
หากคุณต้องการรับ idToken
หรือ serverAuthCode
กลับจากกระบวนการลงชื่อเข้าใช้ คุณจะต้องส่งรหัสไคลเอ็นต์สำหรับเว็บแอปพลิเคชันของโปรเจ็กต์ของคุณ สามารถพบได้ในหน้าข้อมูลรับรอง API ของโครงการของคุณบนคอนโซลนักพัฒนาซอฟต์แวร์ของ Google
ปลั๊กอินนี้เข้ากันได้กับ:
นี่คือวิธีการทำงาน (สำรองโครงการของคุณก่อน!):
การใช้ Cordova CLI และ npm:
$ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
การใช้ Cordova CLI เพื่อดึงข้อมูลเวอร์ชันล่าสุดจาก GitHub:
$ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid --variable WEB_APPLICATION_CLIENT_ID=mywebapplicationclientid
$ cordova prepare
สำคัญ:
โปรดทราบว่า myreversedclientid
เป็นที่ยึดสำหรับรหัสไคลเอ็นต์ที่กลับรายการที่คุณพบในไฟล์การกำหนดค่า iOS อย่าล้อมค่านี้ด้วยเครื่องหมายคำพูด (แอพพลิเคชั่น iOS เท่านั้น)
หากคุณกำลังสร้างแอปพลิเคชันไฮบริด (iOS และ Android) หรือแอปพลิเคชัน Android คุณต้องแทนที่ myreversedclientid
ด้วยค่าย้อนกลับของ Client ID ในข้อมูลรับรอง การเผยแพร่ ของคุณที่สร้างในขั้นตอนที่ 3 บนคอนโซลนักพัฒนาซอฟต์แวร์ของ Google ซึ่งจะเป็น: "com .googleusercontent.apps uniqueId
" โดยไม่มีเครื่องหมายคำพูด ตัวอย่าง: "123-abc123.apps.googleusercontent.com" จะกลายเป็น "com.googleusercontent.apps.123-abc123"
myreversedclientid
เป็นที่ยึดสำหรับรหัสไคลเอ็นต์ Oauth ที่สร้างขึ้นโดยเฉพาะสำหรับแอปพลิเคชันเว็บในคอนโซลนักพัฒนาซอฟต์แวร์ของ Google
GooglePlus.js ถูกนำเข้ามาโดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยนแปลงหรือเพิ่มสิ่งใดใน html ของคุณ
เพิ่มสิ่งนี้ลงใน config.xml ของคุณ:
สำหรับเวอร์ชัน NPM (เสถียร):
< plugin name = " cordova-plugin-googleplus " source = " npm " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
plugin >
สำหรับเวอร์ชันล่าสุดจาก Git (ไม่แนะนำ):
< plugin spec = " https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git " source = " git " >
< variable name = " REVERSED_CLIENT_ID " value = " myreversedclientid " />
< variable name = " WEB_APPLICATION_CLIENT_ID " value = " mywebapplicationclientid " />
< plugin >
ปลั๊กอินนี้ใช้ตัวจัดการการขึ้นต่อกันของ CocoaPods เพื่อตอบสนองการขึ้นต่อกันของไลบรารี iOS Google SignIn SDK
ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Cocoapods ในสภาพแวดล้อม iOS build ของคุณ - สามารถดูคำแนะนำในการตั้งค่าได้ที่นี่ ตรวจสอบให้แน่ใจว่า repo Cocoapods ในพื้นที่ของคุณเป็นปัจจุบันด้วยการเรียกใช้ pod repo update
หากสร้างโปรเจ็กต์ของคุณใน Xcode คุณจะต้องเปิด YourProject.xcworkspace
(ไม่ใช่ YourProject.xcodeproj
) เพื่อให้ทั้งโปรเจ็กต์แอป Cordova และโปรเจ็กต์ Pods ของคุณจะถูกโหลดลงใน Xcode
คุณสามารถแสดงรายการการขึ้นต่อกันของพ็อดในโปรเจ็กต์ Cordova iOS ของคุณได้โดยการติดตั้งการขึ้นต่อกันของโกโก้:
sudo gem install cocoapods-dependencies
cd platforms/ios/
pod dependencies
ตรวจสอบแอปสาธิตเพื่อให้คุณก้าวต่อไปได้อย่างรวดเร็วหรือทำร้ายตัวเองและทำตามขั้นตอนเหล่านี้
โปรดทราบว่าไม่ควรเรียกใช้เมธอดเหล่านี้ก่อนที่ deviceready
จะเริ่มทำงาน
ตัวอย่าง:
document . addEventListener ( 'deviceready' , deviceReady , false ) ;
function deviceReady ( ) {
//I get called when everything's ready for the plugin to be called!
console . log ( 'Device is ready!' ) ;
window . plugins . googleplus . trySilentLogin ( ... ) ;
}
31/3/59: วิธีนี้ไม่จำเป็นต้องตรวจสอบก่อนอีกต่อไป มันถูกเก็บไว้สำหรับโค้ด orthoganality
ฟังก์ชั่นการเข้าสู่ระบบจะนำผู้ใช้เข้าสู่กระบวนการ Google Auth พารามิเตอร์ทั้งหมดเป็นทางเลือก แต่มีข้อควรระวังบางประการ
หากต้องการรับ idToken
บน Android คุณ ต้อง ส่ง webClientId
ของคุณ (ข้อผิดพลาดที่พบบ่อยคือการระบุรหัสไคลเอ็นต์ Android) บน iOS idToken
จะรวมอยู่ในผลลัพธ์การลงชื่อเข้าใช้ตามค่าเริ่มต้น
หากต้องการรับ serverAuthCode
คุณต้องส่งผ่าน webClientId
ของคุณ และ ตั้งค่า offline
เป็น True หากออฟไลน์เป็นจริง แต่ไม่มีการระบุ webClientId จะ ไม่มี การร้องขอ serverAuthCode
ขอบเขตเริ่มต้นที่ร้องขอคือ profile
และ email
(ร้องขอเสมอ) หากต้องการขอขอบเขตอื่นๆ ให้เพิ่มเป็น รายการที่คั่นด้วยช่องว่าง ในพารามิเตอร์ scopes
พวกเขาจะได้รับการร้องขอทุกประการตามที่ส่งเข้ามา โปรดดูเอกสารประกอบของ Google Scopes สำหรับข้อมูลเกี่ยวกับขอบเขตที่ถูกต้องที่สามารถขอได้ ตัวอย่างเช่น 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'
โดยปกติแล้ว หากต้องการใช้ขอบเขตหรือ API เพิ่มเติม จะต้องเปิดใช้งานในคอนโซลนักพัฒนาโปรเจ็กต์ของคุณ
window . plugins . googleplus . login (
{
'scopes' : '... ' , // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true // optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
การเรียกกลับสำเร็จ (อาร์กิวเมนต์ที่สอง) ได้รับออบเจ็กต์ JSON ที่มีเนื้อหาดังต่อไปนี้ พร้อมข้อมูลตัวอย่างของบัญชี Google ของฉัน:
obj . email // '[email protected]'
obj . userId // user id
obj . displayName // 'Eddy Verbruggen'
obj . familyName // 'Verbruggen'
obj . givenName // 'Eddy'
obj . imageUrl // 'http://link-to-my-profilepic.google.com'
obj . idToken // idToken that can be exchanged to verify user identity.
obj . serverAuthCode // Auth code that can be exchanged for an access token and refresh token for offline access
obj . accessToken // OAuth2 access token
มีข้อมูลผู้ใช้เพิ่มเติมตามกรณีการใช้งาน เพิ่มขอบเขตที่จำเป็นให้กับตัวเลือกขอบเขต จากนั้นส่งคืนข้อมูลไปยังออบเจ็กต์ผลลัพธ์ที่สร้างขึ้นในฟังก์ชัน handleSignInResult
และ didSignInForUser
บน Android และ iOS ตามลำดับ
บน Android การโทรกลับข้อผิดพลาด (อาร์กิวเมนต์ที่สาม) จะได้รับรหัสสถานะข้อผิดพลาดหากการรับรองความถูกต้องไม่สำเร็จ คำอธิบายของรหัสสถานะเหล่านั้นสามารถพบได้บนเว็บไซต์นักพัฒนา Android ของ Google ที่ GoogleSignInStatusCodes
บน iOS การเรียกกลับข้อผิดพลาดจะรวม NSError localizedDescription
คุณสามารถโทรไปที่ trySilentLogin
เพื่อตรวจสอบว่าลงชื่อเข้าใช้แอปแล้วหรือไม่ และลงชื่อเข้าใช้แบบเงียบๆ หากลงชื่อเข้าใช้แล้ว
หากสำเร็จ คุณจะได้รับออบเจ็กต์เดียวกับที่ฟังก์ชัน login
ได้รับ แต่หากล้มเหลวก็จะไม่แสดงกล่องโต้ตอบการรับรองความถูกต้องให้ผู้ใช้เห็น
การเรียก trySilentLogin
ทำได้เหมือนกับ login
ยกเว้นชื่อฟังก์ชัน
window . plugins . googleplus . trySilentLogin (
{
'scopes' : '... ' , // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
'webClientId' : 'client id of the web app/server side' , // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
'offline' : true , // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
} ,
function ( obj ) {
alert ( JSON . stringify ( obj ) ) ; // do something useful instead of alerting
} ,
function ( msg ) {
alert ( 'error: ' + msg ) ;
}
) ;
ขอแนะนำอย่างยิ่งให้ลองใช้ trySilentLogin ด้วยตัวเลือกเดียวกับการเข้าสู่ระบบ เพื่อหลีกเลี่ยงภาวะแทรกซ้อนที่อาจเกิดขึ้น
การดำเนินการนี้จะล้างโทเค็น OAuth2
window . plugins . googleplus . logout (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
การดำเนินการนี้จะล้างโทเค็น OAuth2 ลืมว่าบัญชีใดใช้เข้าสู่ระบบ และยกเลิกการเชื่อมต่อบัญชีนั้นจากแอป การดำเนินการนี้จะต้องให้ผู้ใช้อนุญาตให้แอปเข้าถึงอีกครั้งเมื่อลงชื่อเข้าใช้ครั้งถัดไป โปรดทราบว่าผลกระทบนี้ไม่ได้เกิดขึ้นทันทีเสมอไป อาจต้องใช้เวลาในการยกเลิกการเชื่อมต่อโดยสมบูรณ์
window . plugins . googleplus . disconnect (
function ( msg ) {
alert ( msg ) ; // do something useful instead of alerting
}
) ;
idToken
เอกสาร Google สำหรับการตรวจสอบสิทธิ์กับเซิร์ฟเวอร์แบ็กเอนด์
ตามที่บทความข้างต้นกล่าวถึง idToken
สามารถแลกเปลี่ยนเป็นข้อมูลผู้ใช้เพื่อยืนยันตัวตนของผู้ใช้ได้
หมายเหตุ: Google ไม่ต้องการให้ส่งข้อมูลประจำตัวผู้ใช้ไปยังเซิร์ฟเวอร์โดยตรง idToken เป็นวิธีที่พวกเขาชอบในการส่งข้อมูลนั้นอย่างปลอดภัย เนื่องจากต้องได้รับการตรวจสอบผ่านเซิร์ฟเวอร์เพื่อที่จะแกะกล่อง
สิ่งนี้มีประโยชน์หลายอย่าง ในฝั่งไคลเอ็นต์ อาจเป็นวิธีการยืนยันตัวตนผู้ใช้เป็นสองเท่า หรือสามารถใช้เพื่อดูรายละเอียด เช่น โดเมนโฮสต์ของอีเมล ฝั่งเซิร์ฟเวอร์คือจุดที่ idToken
ก้าวไปอย่างรวดเร็ว เป็นวิธีง่ายๆ ในการยืนยันตัวตนของผู้ใช้ก่อนที่จะอนุญาตให้พวกเขาเข้าถึงทรัพยากรเซิร์ฟเวอร์นั้น หรือก่อนที่จะแลกเปลี่ยน serverAuthCode
สำหรับโทเค็นการเข้าถึงและรีเฟรช (ดูหัวข้อถัดไป)
หากฝั่งเซิร์ฟเวอร์ของคุณต้องการเพียงข้อมูลระบุตัวตน และไม่ต้องการการเข้าถึงบัญชีเพิ่มเติม นี่เป็นวิธีที่ปลอดภัยและง่ายดายในการให้ข้อมูลนั้น
serverAuthCode
เอกสาร Google สำหรับการเปิดใช้งานการเข้าถึงฝั่งเซิร์ฟเวอร์
ตามที่บทความข้างต้นกล่าวถึง serverAuthCode
เป็นรายการที่สามารถแลกเปลี่ยนเป็นโทเค็นการเข้าถึงและรีเฟรชได้ ต่างจาก idToken
ตรงที่อนุญาตให้ฝั่งเซิร์ฟเวอร์เข้าถึงบัญชี Google ของผู้ใช้ได้โดยตรง
เฉพาะในคำขอเข้าสู่ระบบเริ่มต้น serverAuthCode
เท่านั้นที่จะถูกส่งกลับ หากคุณต้องการรับโทเค็นเป็นครั้งที่สอง คุณสามารถทำได้โดยใช้การออกจากระบบก่อน
คุณมีทางเลือก 2-3 ทางเมื่อพูดถึงการแลกเปลี่ยนนี้: คุณสามารถใช้ Google REST Apis เพื่อรับสิ่งเหล่านั้นในแอปไฮบริด หรือคุณสามารถส่งโค้ดไปยังเซิร์ฟเวอร์แบ็กเอนด์ของคุณเพื่อแลกเปลี่ยนที่นั่น โดยใช้วิธีใดก็ตามที่จำเป็น (Google ให้ตัวอย่างไว้ด้วย) สำหรับ Java, Python และ JS/HTTP)
ตามที่ระบุไว้ก่อนหน้านี้ ปลั๊กอินนี้เกี่ยวกับการตรวจสอบสิทธิ์และการระบุตัวตนของผู้ใช้ ดังนั้นการใช้งานบัญชีผู้ใช้นอกเหนือจากนั้นจะต้องดำเนินการตามกรณีการใช้งาน ต่อแอปพลิเคชัน
ถาม: ฉันไม่สามารถรับการรับรองความถูกต้องเพื่อทำงานบน Android ได้ และเหตุใดจึงไม่มีคีย์ ANDROID API
ตอบ: บน Android คุณต้องดำเนินการตามขั้นตอน keytool
ดูคำแนะนำในการติดตั้งสำหรับรายละเอียด
ถาม: หลังจากทำตามขั้นตอน keytool
แล้ว ฉันยังไม่สามารถรับการตรวจสอบสิทธิ์เพื่อทำงานบน Android ได้ ฉันมี "ข้อผิดพลาด 10 ข้อ"!!!
ตอบ: คุณต้องได้รับใบรับรอง SHA 1 จากไฟล์ APK ของคุณ เรียกใช้: keytool -list -printcert -jarfile
และคัดลอก SHA 1 ไปยัง ID ไคลเอ็นต์ Android ของคุณบน Google Console
ถาม: โอ้พระเจ้า $@#*! บิลด์ Android ล้มเหลว
ตอบ: คุณต้องมี Android Support Repository และ Android Support Library ติดตั้งอยู่ใน Android SDK manager ตรวจสอบให้แน่ใจว่าคุณใช้เวอร์ชันที่ค่อนข้างทันสมัย
ถาม: เหตุใดจึงใช้งานไม่ได้กับ Android Emulator ของฉัน
ตอบ: ตรวจสอบให้แน่ใจว่าคุณใช้อุปกรณ์เสมือนที่ทำงานโดยมี เป้าหมาย Google APIs และ/หรือ CPU ของ Google APIs
ถาม: ฉันได้รับ ข้อผิดพลาด 10 ฉันควรทำอย่างไร?
ตอบ: กรณีนี้อาจเกิดจากการที่ Cordova ไม่ได้ใช้ที่เก็บคีย์ที่คุณต้องการใช้ (เช่น เนื่องจากคุณสร้างคีย์สโตร์ของคุณเอง) โปรดตรวจสอบ https://cordova.apache.org/docs/en/latest/guide/platforms/android/#signing-an-app เพื่ออ่านวิธีดำเนินการนี้ มีบางคนรายงานว่าคุณต้องรัน cordova clean
ก่อนรัน build เพื่อแก้ไขข้อผิดพลาด 10
ถาม: ฉันได้รับ ข้อผิดพลาด 16 ฉันควรทำอย่างไร?
ตอบ: นี่เป็นปัญหาเสมอเพราะลายเซ็น (หรือลายนิ้วมือ) ของแอป Android ของคุณเมื่อลงนามไม่ได้ถูกเพิ่มลงในรายการอนุญาต OAuth ของคอนโซล Google (หรือ firebase) โปรดตรวจสอบอีกครั้งว่าคุณทำทุกอย่างที่จำเป็นสำหรับสิ่งนี้หรือไม่ ดูคู่มือฉบับย่อด้านล่าง
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้อ่านและทำความเข้าใจคำแนะนำเกี่ยวกับการลงนามแอปจากเอกสารประกอบของ Android อย่างครบถ้วนแล้ว
หลังจาก/ขณะอ่านข้อความนั้น ให้ตรวจสอบอีกครั้งว่าคุณทำตามขั้นตอนที่ 1-4 ด้านล่างทั้งหมดถูกต้องหรือไม่:
ในการลงนามแอปของคุณ (บน dev หรือเผยแพร่) คุณจะต้องสร้างที่เก็บคีย์ในเครื่องและคีย์ด้วย Android Studio หรือผ่านเทอร์มินัล Google มีฟีเจอร์ที่เรียกว่า "การลงนามแอป Google Play" ซึ่งพวกเขาจะเก็บคีย์ไว้บนเซิร์ฟเวอร์และลงนามแอปของคุณให้กับคุณ แต่ถ้าคุณใช้ฟีเจอร์นี้หรือไม่ คุณจะต้องมีที่เก็บคีย์และคีย์ในเครื่องไม่ว่าจะด้วยวิธีใดก็ตาม
คีย์สโตร์และคีย์ในพื้นที่ของคุณจะเป็นคีย์การลงนามแอปอย่างเป็นทางการของคุณ
คุณจะต้องอนุญาตพิเศษให้กับลายนิ้วมือหลักต่อไปนี้ (ในรูปแบบ SHA1) ในการตั้งค่า Google OAuth:
debug.keystore
เริ่มต้นของ Androidคีย์สโตร์และคีย์ในเครื่องของคุณจะเป็น "คีย์การอัปโหลด" และคีย์อีกอันสำหรับ "คีย์ App Signing" อย่างเป็นทางการจะสร้างและจัดการโดย Google
คุณต้องอนุญาตพิเศษให้กับลายนิ้วมือหลักต่อไปนี้ (ในรูปแบบ SHA1) ในการตั้งค่า Google Oauth:
debug.keystore
เริ่มต้นของ Androidรับลายนิ้วมือของคีย์ด้านบน (ในรูปแบบ SHA1) เพื่อให้อนุญาตพิเศษได้
สำหรับ debug.keystore
เริ่มต้นของ android ให้ทำ:
keytool -exportcert -keystore /Users/myusername/.android/debug.keystore -list -v
คุณจะเห็นลายนิ้วมือ SHA1 สำหรับคีย์ดีบักในเทอร์มินัล คัดลอกสิ่งนั้น
สำหรับที่เก็บคีย์ที่สร้างขึ้นเองด้วยคีย์ (สำหรับ 2A หรือ 2B) ให้ทำ:
keytool -exportcert -keystore /path/to/your/key/yourKeystoreFile.keystore -list -v
คุณจะเห็นลายนิ้วมือ SHA1 สำหรับคีย์ดีบักในเทอร์มินัล คัดลอกสิ่งนั้น
เมื่อเปิดใช้งาน Google Play App Signing เท่านั้น (สำหรับ 2B) คุณสามารถค้นหาคีย์ที่ Google จะใช้ลงนามบิวด์ของคุณได้ใน Google Play Console
ข้อกำหนด: คุณต้องกรอกข้อมูลพื้นฐานเกี่ยวกับแอป Android ของคุณให้เสร็จสิ้น จากนั้นจึงอัปโหลด APK ที่ลงนามแล้วสำหรับการทดสอบภายใน เมื่ออัปโหลดแล้ว คุณจะสามารถเข้าถึงเมนูต่อไปนี้:
ไปที่การจัดการการเผยแพร่ > การลงนามแอป ที่นั่นคุณจะเห็น
"อัปโหลด" อันหนึ่งคือ (และควรเป็น) เหมือนกับคีย์ B. ด้านบน และ "App Signing Certificate" ก็คือคีย์ที่ Google จะใช้ คัดลอกอันนี้
เรามี 2 ตัวเลือกในการอนุญาตพิเศษอีกครั้ง โปรเจ็กต์ที่ใช้เฉพาะ Google Cloud Platform หรือโปรเจ็กต์ที่ใช้ Firebase
(ในกรณีที่คุณใช้ Firebase ด้วย คุณสามารถข้ามขั้นตอนนี้ได้)