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

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