javascript - 使用 google API 和 javascript 的 PHP 项目 : Inherited Mess

标签 javascript php google-people-api

所以我在工作中继承了一些用户 php.ini 的项目。我没有使用 php 的经验,所以当然一​​直在努力解决我们发现的问题。此时,我只是想获取访问该网站时恰好登录的人员的 google id。奇怪的是,有时我的代码运行得很好,并且我得到了 google id,但它只适用于我们尝试过的某些帐户,其他帐户只是返回 null。下面的代码我只是想让谁正确登录,但我对这一切是如何工作的一无所知,以至于我不知道出了什么问题。

<!DOCTYPE html>
<html class="no-js" lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Career Opportunities</title>


  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script src="https://apis.google.com/js/client:platform.js"></script>
  <script type="text/javascript">
    function startUp(onSuccess, onFailure) {
      gapi.client.init({
        apiKey: 'API KEY',
        clientId: 'CLIENTID.apps.googleusercontent.com',
        scope: 'profile',
      }).then(function() {
        var x = gapi.auth2.getAuthInstance();
        console.log("gapi.auth2.getAuthInstance() : " + x);
			console.log("userId is : " + x.currentUser.get().getId());

        gapi.client.load('people', 'v1', function() {
          var request = gapi.client.people.people.get({
            'resourceName': 'people/me',
            'requestMask.includeField': 'person.phone_numbers,person.organizations,person.email_addresses,person.names'
          });
          console.log('request: ' + request);
          request.execute(function(resp) {
            console.log(resp);

          });
        });
      });

    }
    gapi.load('client', startUp);
  </script>


  <script src="js/validation.js" async defer></script>



</head>

<body>



</body>

</html>

这是当它出于某种原因不喜欢用户时出现的错误。编辑:此错误出现在控制台中。该页面什么也不做,只是显示谁通过 console.log 登录。

代码:401

数据:未定义

错误:{代码:401,数据:未定义,消息:“请求没有有效的身份验证凭据。”}

消息:“请求没有有效的身份验证凭据。”

原型(prototype):对象

我尝试了很多不同的事情,我认为这段代码将是一堆不同方法的集合,抱歉哈哈。

编辑-添加了更多console.logs-编辑上面的代码以反射(reflect)这一点

bobtest.php:101 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:102 userId is : null
bobtest.php:108 request: [object Object]
cb=gapi.loaded_0:148 GET https://content-people.googleapis.com/v1/people/me?requestMask.includeField=person.phone_numbers&key=401 ()
zu @ cb=gapi.loaded_0:148
n @ cb=gapi.loaded_0:148
Cu @ cb=gapi.loaded_0:149
(anonymous) @ cb=gapi.loaded_0:149
g @ cb=gapi.loaded_0:123
c @ cb=gapi.loaded_0:119
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:122
setTimeout (async)
call @ cb=gapi.loaded_0:122
call @ cb=gapi.loaded_0:134
l @ cb=gapi.loaded_0:195
(anonymous) @ cb=gapi.loaded_0:194
g @ cb=gapi.loaded_0:126
c @ cb=gapi.loaded_0:122
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:119
setTimeout (async)
call @ cb=gapi.loaded_0:119
call @ cb=gapi.loaded_0:131
_.Xj.Rl @ cb=gapi.loaded_0:149
_.Xj.kc @ cb=gapi.loaded_0:149
window.startup @ proxy.html?usegapi=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.tZDXb_qbHrc.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%:8
(anonymous) @ googleapis.proxy.js?onload=startup:10
ba @ googleapis.proxy.js?onload=startup:3
b @ googleapis.proxy.js?onload=startup:10
Y.r.(anonymous function) @ googleapis.proxy.js?onload=startup:10
Y.x.(anonymous function) @ googleapis.proxy.js?onload=startup:11
(anonymous) @ cb=gapi.loaded_0:1
bobtest.php:110 {code: 401, data: undefined, message: "The request does not have valid authentication credentials.", error: {…}}

编辑3添加了更多console.logs

----STARTING CLIENT.INIT
bobtest.php:101 ----CLIENT.INIT SUCCESSFUL
bobtest.php:103 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:104 userId is : null
bobtest.php:110 ----CLIENT.LOAD SUCCESSFUL
bobtest.php:111 request: [object Object]
cb=gapi.loaded_0:148 GET https://content-people.googleapis.com/v1/people/me?requestMask.includeField=person.phone_numbers%2Cperson.organizations%2Cperson.email_addresses%2Cperson.names&key=AIzaSyATLxJElwrDoYaBJtcWCOOP4JI7CUKlXUk 401 ()
zu @ cb=gapi.loaded_0:148
n @ cb=gapi.loaded_0:148
Cu @ cb=gapi.loaded_0:149
(anonymous) @ cb=gapi.loaded_0:149
g @ cb=gapi.loaded_0:123
c @ cb=gapi.loaded_0:119
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:122
setTimeout (async)
call @ cb=gapi.loaded_0:122
call @ cb=gapi.loaded_0:134
l @ cb=gapi.loaded_0:195
(anonymous) @ cb=gapi.loaded_0:194
g @ cb=gapi.loaded_0:126
c @ cb=gapi.loaded_0:122
postMessage (async)
(anonymous) @ cb=gapi.loaded_0:119
setTimeout (async)
call @ cb=gapi.loaded_0:119
call @ cb=gapi.loaded_0:131
_.Xj.Rl @ cb=gapi.loaded_0:149
_.Xj.kc @ cb=gapi.loaded_0:149
window.startup @ proxy.html?usegapi=1&jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.tZDXb_qbHrc.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Frs%3DAGLTcCOgQjGru3ruZo70XwAerRmnfOfOeA:8
(anonymous) @ googleapis.proxy.js?onload=startup:10
ba @ googleapis.proxy.js?onload=startup:3
b @ googleapis.proxy.js?onload=startup:10
Y.r.(anonymous function) @ googleapis.proxy.js?onload=startup:10
Y.x.(anonymous function) @ googleapis.proxy.js?onload=startup:11
(anonymous) @ cb=gapi.loaded_0:1
bobtest.php:113 ----REQUEST.EXECUTE CALLBACK
bobtest.php:114 {code: 401, data: undefined, message: "The request does not have valid authentication credentials.", error: {…}}

编辑4添加了成功的控制台日志

----STARTING CLIENT.INIT

bobtest.php:101 ----CLIENT.INIT SUCCESSFUL
bobtest.php:103 gapi.auth2.getAuthInstance() : [object Object]
bobtest.php:104 userId is : 9999(actually shows id, just removed just in case)
bobtest.php:110 ----CLIENT.LOAD SUCCESSFUL
bobtest.php:111 request: [object Object]
bobtest.php:113 ----REQUEST.EXECUTE CALLBACK
bobtest.php:114 {resourceName: "people/9999999", etag: "%999999=", names: Array(1), emailAddresses: Array(1), result: {…}}

最佳答案

我不会继续发表评论,而是会在这里提出一些建议,并在您编辑问题时进行编辑。

首先,请将控制台的输出复制到您的问题中。这将帮助我们了解代码中到目前为止发生了什么。

编辑4:

我不熟悉您正在使用的google api,所以我最好的建议是测试这段代码,如果它有时返回logged in = true,有时返回false,请使用这个简化的方法在stackoverflow上提出一个新问题代码。使用 javascript 和 google api 对其进行标记(无论主标记是什么)。查看类似 https://stackoverflow.com/a/33380879/3650835 的答案你的代码完全不同。所以我现在的猜测是,您进行的 api 调用需要重写/未按正确的顺序调用。但是尝试一下这个简化的代码,它是否有时显示已登录,有时不显示?如果是这样,那么我们已经缩小了问题的范围,足以让您提出问题,并且可能会得到真正熟悉 Google API 的人的答复。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Career Opportunities</title>

  <script src="https://apis.google.com/js/client:platform.js"></script>
  <script type="text/javascript">
  $(document).ready(function() {
    gapi.load('client', startUp);

    function startUp(onSuccess, onFailure) {
      gapi.client.init({
        apiKey: 'API KEY',
        clientId: 'CLIENTID.apps.googleusercontent.com',
        scope: 'profile',
      }).then(function() {
        // here we log whether the user is signed in or not, and it changes unexpectedly
        var x = gapi.auth2.getAuthInstance();
        console.log(x.isSignedIn.get());
      });
    }
    });
  </script>

</head>
<body>
</body>
</html>

关于javascript - 使用 google API 和 javascript 的 PHP 项目 : Inherited Mess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48306754/

相关文章:

javascript - jquery 回调附加后 anchor 不起作用

javascript - 如何让 console.log 显示对象的当前状态?

php - 用种子随机化 PHP 数组?

php - PHP-XCache 将数据保存在哪里?

javascript - Google People API 请求

google-api-nodejs-client - Google People API 连接列表返回空响应

c# - 通过 Javascript 从代码隐藏访问全局静态变量

javascript - 访问 IIFE 函数变量

php - 当我们使用 MasterCard 时,PayPal Pro 是否必须填写地址字段?

google-people-api - Google People API 空引荐来源网址(但引荐来源网址是在控制台中设置的)