javascript - Simperium JS 登录失败

标签 javascript authentication simperium

我是 Simperium 的新手,正在使用 Javascript API。

我确实使用授权获得了访问 token ,但在创建新的 Simperium(...) 时收到“auth”错误,因此我尝试获取新 token ,但失败,返回错误代码 400 或 401。

这是我的代码,其中 KEY 是 api key ,ID 是应用程序 ID,USER 和 PASS 是我的用户名和密码...

授权:

var url,request,response,json,token,auth;
url="https://auth.simperium.com/1/"+appID+"/authorize/";
request=new XMLHttpRequest();
request.onreadystatechange=function() {
    if(request.readyState===4) {
        if(request.status===200) {
            response=request.responseText;
            console.log('response: '+response);
            if(response.length>0) {
                json=JSON.parse(response);
                token=json.access_token;
                ...
            }
        }
        else {
            console.log('ERROR');
            return null;
        }
    }
};
request.open("POST",url,true);
request.setRequestHeader("X-Simperium-API-Key",'"'+KEY+'"');
request.setRequestHeader("Content-type", "application/json");
auth='{"username": "'+USER+'", "password": "'+PASS+'"}';
request.send(auth);

失败并返回 400 或 401!

当我拥有 ACCESS_TOKEN 时:

var options="{token: '"+ACCESS_TOKEN+"'}";
var simperium=new Simperium(ID,options);
var bucket=simperium.bucket('ledger');
bucket.on('notify',function(id,data) {
    console.log("transaction updated: "+data);
    ...
});
bucket.on("error", function(error) {
    console.log("Simperium error : "+error);
    if (error == "auth") {
        console.log("auth error, need to reauthenticate and get new access token")
        ...
    }
});
bucket.start();

这导致了“auth”错误。

最佳答案

有几件事,为了在 API key 上设置请求 header ,您不需要在 api key 周围添加额外的引号,除非您从模板中呈现它。如果您的 key 是 abcdefg,它应该如下所示:

request.setRequestHeader("X-Simperium-API-Key","abcdefg");

一旦您拥有访问 token ,在设置选项对象时,您应该传递一个对象而不是字符串:

var options={token: "ACCESS_TOKEN"};

关于javascript - Simperium JS 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13051959/

相关文章:

javascript - 使用 JavaScript 获取 <td >'s height and a <p>' s 字体大小

javascript - 使用 jQuery 打开底部页面。

javascript - 正则表达式在开始或结束时没有空格,但允许中间有空格但也只允许一个字符输入

c# - 使用 C# 在线进行现代身份验证交换

ios - 使用 Simperium 构建 iOS 应用程序时出现链接器错误

simperium - 继承自 NSManagedObject

javascript - React : flattenChildren(. ..): 遇到两个拥有相同 key 的 child

php - $this->Auth->identify();在 cakephp 3.2 中返回 false

html - 绕过阻止其 URL 包含嵌入式凭据的子资源请求

ios - Simperium iOS CoreData 关系随机为空