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

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