从XMLHttpRequest获取POST数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从XMLHttpRequest获取POST数据相关的知识,希望对你有一定的参考价值。

我正在尝试让Google登录在我的网站上工作。 当我手动设置令牌ID时,一切正常,但我不知道如何从XMLHttpRequest获取它。

glogin.js

function onSignIn(googleUser) {
      var profile = googleUser.getBasicProfile();
      var id_token = googleUser.getAuthResponse().id_token;
      console.log('ID: ' + id_token); 
      console.log('Name: ' + profile.getName());
      console.log('Image URL: ' + profile.getImageUrl());
      console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.

    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'https://example.com/signup.php');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send('idtoken='+id_token);

    }

signup.php

<?php 
require_once 'google-api-php-client/vendor/autoload.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (!empty($_POST["idtoken"]) && $_POST["idtoken"] != NULL) {
        $client = new Google_Client(['client_id' => $CLIENT_ID]);  // Specify the CLIENT_ID of the app that accesses the backend
        $payload = $client->verifyIdToken($_POST["idtoken"]);
    if ($payload) {
        $userid = $payload['sub'];
        echo 'valid';
    } else {
        // Invalid ID token
        echo 'invalid';
    }
    }
}
?>
答案
function onSignIn(googleUser) {
  var profile = googleUser.getBasicProfile();
  var id_token = googleUser.getAuthResponse().id_token;
  console.log('ID: ' + id_token); 
  console.log('Name: ' + profile.getName());
  console.log('Image URL: ' + profile.getImageUrl());
  console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.

window.location.href = "https://example.com/signup.php?tokenid="+id_token;

}

我放弃,为什么甚至浪费我的时间与XMLHttpRequest,而我可以这样做。

以上是关于从XMLHttpRequest获取POST数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XMLHttpRequest 发送 POST 数据

ajax 和xmlHttpRequest区别

jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法

XMLHttpRequest.open();第一个参数post,get有啥不同,啥时候选啥,还有其他的,都有啥区别

Webpack运行后,XMLHttpRequest发送带参请求,后台$_POST没有数据

有啥方法可以在 .net core 3.1 的基本控制器上获取 XMLHttpRequest 的数据类型