XMLHttpRequest不能加载https://accounts.google.com/o/oauth2/token

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/token, Angularjs

本文关键字:com oauth2 token google accounts 加载 https XMLHttpRequest 不能      更新时间:2023-09-26

我找不到解决问题的方法。我试图通过OAuth 2.0获得谷歌访问令牌,但我无法使我的后方法工作。这是我的代码:

function oauthCallback(url) {
        var code,
            obj, request;
        if (url.indexOf("code=") > 0) {
            code = url.substr(url.indexOf('=') + 1);
            request = $http({
                method: "POST",
                url: GOOGLE_TOKEN_URL,
                headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                data: 'code=' + code + '&client_id=' + googleClientID + '&client_secret=' + googleClientSecret + '&redirect_uri=' + redirectURI + '&grant_type=authorization_code'
            });
            request.success( function(data) {
                tokenStore['googleToken'] = data.access_token;
            });
            request.error( function(data, status, headers, config) {
                alert('failed!')
            });
            deferredLogin.resolve();
        } else if (url.indexOf("error=") > 0) {;
            deferredLogin.reject(obj);
        } else {
            deferredLogin.reject({error: 'error occured', error_description: 'Unknown', error_reason: "Unknown"});
        }
    }

使用邮差,我有access_token,所以url和数据是正确的。我已经尝试过这个和jsonp和许多其他答案,但我总是得到相同的结果:

XMLHttpRequest无法加载https://accounts.google.com/o/oauth2/token。请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问Origin 'http://localhost:63342'

我做错了什么?

如果您使用AJAX,您将无法绕过安全性它总是会阻止您使用此方法。我看到两个选项

  1. 将AJAX请求改为浏览器重定向。
  2. 在你的服务器上创建一个代理服务器,将请求转发给google,然后返回响应。

这看起来像一个副本Google oauth 400响应:No 'Access-Control-Allow-Origin'