javascript - 如何使用 ajax 接收 Instagram 登录 token

标签 javascript jquery ajax wamp instagram-api

我正在尝试从 Instagram 接收 token ,但遇到了一些问题。我使用此代码,但出现以下错误:

SEC7127:CORS 请求的重定向被阻止。

SCRIPT7002:XMLHttpRequest:网络错误 0x2ef1,由于错误 00002ef1,无法完成操作。

$(document).ready(function() {
    var clientId = 'xxx';
    var clientSecret = 'xxx';
    var redirectUri = 'http://localhost/instagramFeed/';
  
  function callback(code) {
        $.ajax({
            type: 'POST',
            client_id: clientId,
            client_secret: clientSecret,
            grant_type: authorization_code,
            redirect_uri: redirectUri,
            code: code,
            success: function(code) {
                console.log('Callbeck success!');
            },
            error: function(msg) {
                console.log('Error in callback');
                console.log(msg);
            }
        });
    }
    var requestToken = function() {
        var url = 'https://instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirectUri + '&response_type=code';
        $.ajax({
            type: 'GET',
            url: url,
            success: function(code) {
                console.log('Success' + code);
                callback(code);
            },
            error: function(msg) {
                console.log('Error');
                console.log(msg);
            }
        });
    };
    requestToken();
});

最佳答案

一堆错误:code 将作为重定向 URL 中的 url 参数到达,您无法进行 ajax get 调用并获取 code 作为响应。 并且您不能仅使用 javascript 进行服务器显式 oauth 登录,您必须在服务器端代码上进行发布。

如果你只想使用javascript,那么你可以使用Instagram支持的oauth2的客户端隐式授权方法,你必须启用这是应用程序设置。

您所要做的就是使用 response_type=token 而不是 =code 打开身份验证 URL。

window.location = 'https://instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirectUri + '&response_type=token'

只需打开此网址,登录后,access_token 将位于重定向网址的哈希片段中

要获取它,只需在重定向 URL 页面中添加此代码即可

var access_token = "";
if (window.location.hash){
    access_token = window.location.hash.split("access_token=")[1];
    window.location.hash = "";
}

更多详细信息请参见:https://www.instagram.com/developer/authentication/

关于javascript - 如何使用 ajax 接收 Instagram 登录 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38433085/

相关文章:

javascript - 更改无限运行 CSS 动画的当前百分比

jquery - HTML 强制 VoiceOver 的朗读顺序

javascript - 在 Ajax POST 中,我需要在发送前对参数进行 urlencode 吗?

javascript - Js数组检测: number of values from php array found (grabbed from database)

javascript - 从另一个函数访问另一个属性

javascript - 模拟/ stub 构造函数

javascript - 使用 jQuery 选择器从父 CLASS 选择子 ID 到子 ID

javascript - 如何检查元素是否具有特定位置?

javascript - 是否可以测试选择框中有多少个选项?

javascript - 如何正确使用客户端和服务器端的 javascript 文件 - Node.js