PHP 项目 google API 和 javascript:继承的混乱

PHP project with google API and javascript: Inherited Mess

所以我继承了用户 php 的一些工作项目。我没有使用 php 的经验,所以当然一​​直在努力解决我们发现的问题。在这一点上,我只是想获取访问该站点时碰巧登录的人的 google id。奇怪的是,有时我的代码工作得很好,我得到了 google id,但它只对我们尝试过的一些帐户有效,其他的只是 return 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,数据:未定义,消息:"The request does not have valid authentication credentials."}

留言:"The request does not have valid authentication credentials."

原型:对象

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

编辑- 添加更多 console.logs - 编辑以上代码以反映这一点

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 apis,所以我最好的建议是测试这段代码,如果它 returns 登录 = true有时是错误的,有时是错误的,使用这个简化的代码在 Whosebug 上提出一个新问题。用 javascript 和 google api 标记它(无论它的主要标记是什么)。查看像 这样的答案,您的代码就大不相同了。所以我现在的猜测是,您进行的 api 调用需要 rewritten/aren 未按正确顺序调用。但是试试这个简化的代码,它有时显示登录,有时不显示吗?如果是这样,那么我们已经缩小了问题的范围,足以让您提出问题并可能从真正熟悉 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>

我并没有真正找到这个答案,我的同事找到了,但我想我应该 post 我们最终开始工作的东西。

gapi.auth.authorize({
            'client_id': myClientId,
            'scope': 'email',
            'immediate': true
        }, function(authResult) {
            if (authResult['status']['signed_in']) {
                // Update the app to reflect a signed in user
                gapi.client.load('plus','v1', function(){
                    var request = gapi.client.plus.people.get({'userId': 'me'});
                    request.execute(function(resp) {

                        var userId = '<?php echo $_SESSION["userID"]; ?>';

                        if(userId == resp.id) {
                            onSuccess();
                        }
                        else {
                            onFailure();
                        }
                    });
                });
            }
            else {
                onFailure();
            }   
        });