如何从localhost获取授权令牌(即没有redirect_url)?

时间:2015-07-29 18:58:40

标签: oauth oauth-2.0 authorization google-oauth token

我想说我想通过javascript / python / localhost 上的任何从谷歌获取授权令牌。我怎样才能做到这一点?在" https://accounts.google.com/o/oauth2/auth上发送授权请求后?..."用户必须允许它,但我的脚本无法获得令牌(因为谷歌无法重定向到localhost)。或者是吗?

1 个答案:

答案 0 :(得分:0)

过去几天我一直在处理OAuth,而且我不确定我是否100%理解它......但我会尽力传达我所学到的知识。

这是我本周早些时候提出问题的代码......

的index.html

<!doctype html>
<html>
<head>
</head>
<body>
   <p>Tripping all day...</p>
   <p id="output"></p>
   <script src="auth.js"></script>

   <script type="text/javascript">
       function init() {
       console.log('init');
       checkAuth();
       }
   </script>
   <script src="https://apis.google.com/js/client.js?onload=init">    </script>
   <script>
      document.getElementById("output").innerHTML = "Coooooorrrrrraaaaalll";
   </script>
</body>
</html>

auth.js

var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';

var SCOPES = 'email';

function handleAuth(authResult) {
    console.log('handle auth');
    console.log(authResult);
}

function checkAuth() {
    console.log('check auth');
    gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false, cookie_policy: 'single_host_origin'}, handleAuth);
}

这使用Google提供的Gapi javascript客户端。当我调用gapi.auth.authorize并将其设置为我在开发者控制台中设置的客户端ID时,它会向我显示Google帐户授权弹出窗口,然后我相信Gapi对象有一个方法可以将OAuth令牌添加到Gapi对象本身。顺便说一下,在设置我的凭据时,我没有包含重定向URI。

在我获得授权调用后,我可以调用oauth2.userinfo.get()来获取我的令牌以用于他们的API。

var request = gapi.client.oauth2.userinfo.get();

对于locahost,我只使用了我的开发服务器的IP地址,该服务器没有附加顶级域名。 Localhost的工作方式可能相同吗?