ย้ายข้อมูลจาก Google+ Sign-In

ขั้นตอนเพื่อลดผลกระทบจากการเปลี่ยนแปลงขอบเขตที่มีต่อผู้ใช้

  1. หากแอปพลิเคชันต้องใช้อีเมลของผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว และคุณเคยใช้ profile.emails.read เพื่อวัตถุประสงค์ดังกล่าวมาก่อนหน้านี้ ให้ใช้ email แทน
  2. ขอรับการอนุมัติสำหรับ profile.emails.read พร้อมคำขอการยืนยันที่ได้รับอนุมัติ โปรดดูหัวข้อฉันจะส่งข้อมูลเพื่อขอรับการยืนยันได้อย่างไร
  3. เพิกถอนโทเค็นผู้ใช้ก่อนหน้าในขอบเขตที่จะนำออกหรือนำสิทธิ์เข้าถึงแอปพลิเคชันออกทั้งหมด เช่น ควรเพิกถอนโทเค็นที่มีสิทธิ์เข้าถึง profile.emails.read เราขอแนะนำให้คุณใช้การเพิกถอนขณะที่ผู้ใช้อยู่ในแอปพลิเคชันของคุณเพื่อให้ได้รับความยินยอมจากผู้ใช้ทันที
  4. แจ้งให้ผู้ใช้ให้ความยินยอมอีกครั้งด้วยขอบเขตใหม่ เช่น email โดยไม่มี profile.emails.read
  5. นำขอบเขตที่จะเลิกใช้จากการกำหนดค่าหน้าจอขอความยินยอม OAuth ของ Google APIs ออก

การเปลี่ยนแปลงที่คุณต้องดำเนินการเพื่อย้ายข้อมูลเว็บไซต์จาก 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 นอกจากนี้ ให้ระบุ Callback ที่สำเร็จและความล้มเหลวแยกต่างหาก แทนที่จะใช้ Callback เดียว ตามตัวอย่างต่อไปนี้

    <!-- 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>
    
  • กำหนดตัวแฮนเดิลความสำเร็จและความล้มเหลวแทนเครื่องจัดการ Callback เดียวตามตัวอย่างต่อไปนี้

    // 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);
    
  • กำหนดตัวแฮนเดิลความสำเร็จและความล้มเหลวแทนเครื่องจัดการ Callback เดียวตามตัวอย่างต่อไปนี้

    // 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);
    
  • กำหนดตัวแฮนเดิลความสำเร็จและความล้มเหลวแทนเครื่องจัดการ Callback เดียวตามตัวอย่างต่อไปนี้

    // 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() กับฟังก์ชัน Callback ที่มีอยู่ตามตัวอย่างต่อไปนี้

    <!-- 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 ลงในพารามิเตอร์ขอบเขต