ขั้นตอนในการลดผลกระทบของการเปลี่ยนแปลงขอบเขตต่อผู้ใช้
- หากแอปพลิเคชันของคุณต้องใช้อีเมลของผู้ใช้ที่ตรวจสอบสิทธิ์ และก่อนหน้านี้คุณเคยใช้
profile.emails.read
เพื่อวัตถุประสงค์ดังกล่าว ให้ใช้email
แทน - ขอการอนุมัติสำหรับ
profile.emails.read
ด้วยคำขอการยืนยันที่ได้รับอนุมัติ โปรดดูฉันจะยื่นคำขอรับการยืนยันได้อย่างไร - เพิกถอนโทเค็นผู้ใช้ก่อนหน้าในขอบเขตที่จะนําออก หรือนําสิทธิ์เข้าถึงแอปพลิเคชันออกทั้งหมด เช่น ควรเพิกถอนโทเค็นที่มีสิทธิ์เข้าถึง
profile.emails.read
เราขอแนะนำให้คุณใช้การเพิกถอนขณะที่ผู้ใช้อยู่ในแอปพลิเคชันเพื่อให้คุณได้รับความยินยอมจากผู้ใช้ทันที - ขอให้ผู้ใช้ให้ความยินยอมอีกครั้งสำหรับขอบเขตใหม่ เช่น
email
โดยไม่รวมprofile.emails.read
- นำขอบเขตที่จะเลิกใช้งานออกจากการกำหนดค่าหน้าจอขอความยินยอม OAuth ของ Google API
การเปลี่ยนแปลงที่คุณต้องทำเพื่อย้ายข้อมูลเว็บไซต์จาก Google+ Sign-In ไปยัง Google Sign-In จะขึ้นอยู่กับขั้นตอน Google+ Sign-In ที่คุณใช้ โดยทั่วไปแล้ว การย้ายข้อมูลจะกำหนดให้คุณอัปเดตปุ่มลงชื่อเข้าใช้ ขอบเขตที่ขอ และวิธีการเรียกข้อมูลโปรไฟล์จาก Google
เมื่ออัปเดตปุ่มลงชื่อเข้าใช้ อย่าอ้างอิงถึง G+ หรือใช้สีแดง ปฏิบัติตามหลักเกณฑ์การใช้แบรนด์ที่อัปเดตแล้ว
แอปพลิเคชันการลงชื่อเข้าใช้ด้วย G+ ส่วนใหญ่ขอขอบเขตต่อไปนี้รวมกัน
plus.login
, plus.me
และ plus.profile.emails.read
คุณต้องแมปขอบเขตใหม่ดังนี้
ขอบเขตเดิม | ขอบเขตใหม่ |
---|---|
plus.login |
profile |
plus.me |
openid |
plus.profile.emails.read |
email |
ผู้ติดตั้งใช้งาน Google+ Sign-In จำนวนมากใช้ขั้นตอนการใช้รหัส ซึ่งหมายความว่าแอป Android, iOS หรือ JavaScript จะได้รับรหัส OAuth จาก Google และไคลเอ็นต์จะส่งรหัสนั้นกลับไปยังเซิร์ฟเวอร์พร้อมกับการป้องกันการปลอมแปลงคำขอข้ามเว็บไซต์ จากนั้นเซิร์ฟเวอร์จะตรวจสอบโค้ดและรับโทเค็นรีเฟรชและโทเค็นการเข้าถึงเพื่อดึงข้อมูลโปรไฟล์ผู้ใช้จาก people.get
API
ตอนนี้ Google ขอแนะนําให้คุณขอโทเค็นระบุตัวตนและส่งโทเค็นระบุตัวตนนั้นจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ โทเค็นระบุตัวตนมีการป้องกันการสร้างข้อมูลเท็จข้ามเว็บไซต์ในตัว และสามารถยืนยันแบบคงที่ในเซิร์ฟเวอร์ได้ด้วย ซึ่งจะช่วยหลีกเลี่ยงการเรียก API เพิ่มเติมเพื่อรับข้อมูลโปรไฟล์ผู้ใช้จากเซิร์ฟเวอร์ของ Google ทําตามวิธีการเพื่อตรวจสอบโทเค็นระบุตัวตนในเซิร์ฟเวอร์
หากยังคงต้องการใช้ขั้นตอนการส่งโค้ดเพื่อรับข้อมูลโปรไฟล์ คุณก็ทําได้ เมื่อเซิร์ฟเวอร์ของคุณมีโทเค็นการเข้าถึงแล้ว คุณจะต้องรับข้อมูลโปรไฟล์ผู้ใช้จากปลายทาง userinfo
ที่ระบุไว้ในเอกสารการค้นพบการลงชื่อเข้าใช้ คำตอบของ API มีรูปแบบแตกต่างจากคำตอบของโปรไฟล์ Google+ คุณจึงต้องอัปเดตการแยกวิเคราะห์เป็นรูปแบบใหม่
ย้ายข้อมูลปุ่มลงชื่อเข้าใช้ HTML
หากคุณใส่ปุ่ม Google+ Sign-In ในหน้าเว็บโดยการกําหนดคลาส g-signin
ให้กับองค์ประกอบ ให้ทําการเปลี่ยนแปลงต่อไปนี้
เมื่อระบุรหัสไคลเอ็นต์ในแท็ก
<meta>
แอตทริบิวต์data-
หรือออบเจ็กต์พารามิเตอร์ ให้เปลี่ยนสตริงclientid
เป็นclient_id
ดังตัวอย่างต่อไปนี้<!-- Google+ Sign-in (old) --> <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
<!-- Google Sign-in (new) --> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
กําหนดคลาส
g-signin2
ให้กับองค์ประกอบปุ่มลงชื่อเข้าใช้แทนg-signin
นอกจากนี้ ให้ระบุการเรียกกลับสําหรับกรณีที่สําเร็จและไม่สําเร็จแยกกันแทนการเรียกกลับรายการเดียว ดังตัวอย่างต่อไปนี้<!-- Google+ Sign-in (old) --> <div class="g-signin" data-callback="signinCallback"> </div>
<!-- Google Sign-in (new) --> <div class="g-signin2" data-onsuccess="onSignIn" data-onfailure="onSignInFailure"> </div>
กำหนดตัวแฮนเดิลสำเร็จและตัวแฮนเดิลที่ดำเนินการไม่สำเร็จแทนตัวแฮนเดิลการเรียกกลับรายการเดียว ดังตัวอย่างต่อไปนี้
// Google+ Sign-in (old) function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Handle successful sign-in } else { // Handle sign-in errors console.log('Sign-in error: ' + authResult['error']); } }
// Google Sign-in (new) function onSignIn(googleUser) { // Handle successful sign-in } function onSignInFailure() { // Handle sign-in errors }
การเปลี่ยนแปลงเหล่านี้จะอัปเดตขอบเขตเริ่มต้นเป็น
profile email openid
คุณดูข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ เช่น ชื่อ อีเมล และ URL รูปภาพ ได้ตามวิธีต่อไปนี้// Google Sign-in (new) function onSignIn(googleUser) { let profile = googleUser.getBasicProfile(); let fullName = profile.getName(); let email = profile.getEmail(); let imageUrl = profile.getImageUrl(); }
ย้ายข้อมูลปุ่มลงชื่อเข้าใช้ที่แสดงผลแบบไดนามิก
หากคุณใส่ปุ่ม Google+ Sign-In ในหน้าเว็บโดยเรียกใช้ gapi.signin.render()
ให้ทําการเปลี่ยนแปลงต่อไปนี้
เมื่อระบุรหัสไคลเอ็นต์ในแท็ก
<meta>
แอตทริบิวต์data-
หรือออบเจ็กต์พารามิเตอร์ ให้เปลี่ยนสตริงclientid
เป็นclient_id
ดังตัวอย่างต่อไปนี้<!-- Google+ Sign-in (old) --> <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
<!-- Google Sign-in (new) --> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
แสดงผลปุ่มลงชื่อเข้าใช้ด้วย
gapi.signin2.render()
แทนgapi.signin.render()
ดังตัวอย่างต่อไปนี้// Google+ Sign-in (old) gapi.signin.render('myButton', additionalParams);
// Google Sign-in (new) gapi.signin2.render('myButton', additionalParams);
กำหนดตัวแฮนเดิลสำเร็จและตัวแฮนเดิลที่ดำเนินการไม่สำเร็จแทนตัวแฮนเดิลการเรียกกลับรายการเดียว ดังตัวอย่างต่อไปนี้
// Google+ Sign-in (old) function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Handle successful sign-in } else { // Handle sign-in errors console.log('Sign-in error: ' + authResult['error']); } }
// Google Sign-in (new) function onSignIn(googleUser) { // Handle successful sign-in } function onSignInFailure() { // Handle sign-in errors }
การเปลี่ยนแปลงเหล่านี้จะอัปเดตขอบเขตเริ่มต้นเป็น profile email openid
คุณสามารถรับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ด้วยเมธอด getBasicProfile()
ย้ายข้อมูลขั้นตอนการลงชื่อเข้าใช้ที่เริ่มต้นโดย JavaScript
หากคุณเริ่มขั้นตอนการลงชื่อเข้าใช้ด้วยการเรียกใช้ gapi.auth.signIn()
เมื่อผู้ใช้คลิกปุ่มลงชื่อเข้าใช้ ให้ทําการเปลี่ยนแปลงต่อไปนี้
เมื่อระบุรหัสไคลเอ็นต์ในแท็ก
<meta>
แอตทริบิวต์data-
หรือออบเจ็กต์พารามิเตอร์ ให้เปลี่ยนสตริงclientid
เป็นclient_id
ดังตัวอย่างต่อไปนี้<!-- Google+ Sign-in (old) --> <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
<!-- Google Sign-in (new) --> <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
ใช้
gapi.auth2.attachClickHandler()
เพื่อเริ่มขั้นตอนการลงชื่อเข้าใช้เมื่อมีการกดปุ่ม ดังตัวอย่างต่อไปนี้// Google+ Sign-in (old) var signinButton = document.getElementById('signinButton'); signinButton.addEventListener('click', function() { gapi.auth.signIn(additionalParams); });
// Google Sign-in (new) auth2 = gapi.auth2.init(); auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
กำหนดตัวแฮนเดิลสำเร็จและตัวแฮนเดิลที่ดำเนินการไม่สำเร็จแทนตัวแฮนเดิลการเรียกกลับรายการเดียว ดังตัวอย่างต่อไปนี้
// Google+ Sign-in (old) function signinCallback(authResult) { if (authResult['status']['signed_in']) { // Handle successful sign-in } else { // Handle sign-in errors console.log('Sign-in error: ' + authResult['error']); } }
// Google Sign-in (new) function onSignIn(googleUser) { // Handle successful sign-in } function onSignInFailure() { // Handle sign-in errors }
การเปลี่ยนแปลงเหล่านี้จะอัปเดตขอบเขตเริ่มต้นเป็น profile email openid
คุณสามารถรับข้อมูลโปรไฟล์พื้นฐานของผู้ใช้โดยการเรียกใช้getBasicProfile()
วิธีนี้
ย้ายข้อมูลเวิร์กโฟลว์ฝั่งเซิร์ฟเวอร์แบบผสม
หากคุณใช้ JavaScript API เพื่อรับรหัสการให้สิทธิ์แบบครั้งเดียวเพื่อส่งไปยังเซิร์ฟเวอร์ ให้ทำการเปลี่ยนแปลงต่อไปนี้
เปลี่ยนขอบเขตจาก
https://www.googleapis.com/auth/plus.login
เป็นprofile
ใช้เมธอด
gapi.auth2.grantOfflineAccess()
กับฟังก์ชันการเรียกกลับที่มีอยู่ ดังตัวอย่างต่อไปนี้<!-- Google+ Sign-in (old) --> <div class="g-signin" data-scope="https://www.googleapis.com/auth/plus.login" data-clientid="YOUR_CLIENT_ID" data-redirecturi="postmessage" data-accesstype="offline" data-callback="signInCallback"> </div>
// Google Sign-in (new) auth2 = gapi.auth2.init({ client_id: 'YOUR_CLIENT_ID', scope: 'profile' }); ... auth2.grantOfflineAccess().then(signInCallback);
หากต้องการเข้าถึงอีเมลของผู้ใช้ด้วย ให้เพิ่ม email
ลงในพารามิเตอร์ขอบเขต