1

私はSimperiumの初心者で、JavascriptAPIを使用しています。

authorizeを使用してアクセストークンを取得しましたが、新しいSimperium(...)を作成するときに「auth」エラーが発生したため、新しいトークンを取得しようとしましたが、これは失敗し、エラーコード400または401が返されます。

これは私のコードです。ここで、KEYはAPIキー、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();

これにより、「認証」エラーが発生しました。

4

1 に答える 1

1

API キーにリクエスト ヘッダーを設定する場合、テンプレートからこれをレンダリングする場合を除き、API キーを余分に引用符で囲む必要はありません。キーが abcdefg の場合、次のようになります。

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

アクセス トークンを取得したら、オプション オブジェクトを設定するときに、文字列ではなくオブジェクトを渡す必要があります。

var options={token: "ACCESS_TOKEN"};
于 2012-10-24T21:52:51.067 に答える