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

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

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