私はDeviseをユーザ認証に使用するRailsアプリケーションを持っています。私はアドオンを開発しており、ajaxを使用して、ユーザー名とパスワード(ユーザー[電子メール]とユーザー[パスワード])パラメータを送信するルートのサインに投稿を行います。Mozilla Devitsを使用するRailsアプリケーションにログインしようとして追加します
私はxmlルート(users/sign_in.xml)に投稿をしようとしていますので、XML応答を取得します。 Railsサーバーは正常に動作し、セッションを作成します。
私はそれをajaxから実行し、成功を返します。その後、認証が必要な別のサービスを実行しようとすると、ログインしていないことを示すエラーが返されます。次回のRailsサーバー呼び出しでCookieを保存するかCookieを送信する必要があります。コンテンツスクリプトから
私が呼び出しています:
function signInSubmit(){
var email = $('#sign_in_email').val();
var password = $('#sign_in_password').val();
signIn(email, password);
}
function signIn(email, password){
var sign_in_data = {
'user[email]' : email,
"user[password]" : password
}
var params = EncodeQueryData(sign_in_data);
invoke("https://stackoverflow.com/users/sign_in", params, signInCallBack);
}
function invoke(url_method, parameters, callback){
var url = url_api + url_method + ".xml?" + parameters;
var req = new XMLHttpRequest();
type = 'POST';
req.open("POST", url, true);
req.overrideMimeType('text/xml');
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == 200) {
callback(req.responseXML);
}else if(req.status == 201){
callback(req.responseXML);
}
}
};
req.send();
}
function signInCallBack(doc){
//This returns an XML saying that authentication was successfull.
// Session was created in the server
login_session_key = doc.getElementsByTagName("email")[0].childNodes[0].nodeValue
callMethodThatNeedsAuthentication();
}
function callMethodThatNeedsAuthentication(){
// This method call returns a not authenticated error.
invoke("/api/methodthatneedsauthentication", "", NeedsAuthenticationCallBack);
}
あなたはどう思いますか?
SDKコードからセッションを使用するにはどうすればよいですか? FireFoxのコンテンツスクリプトに載っていることを覚えておいてください。Add On – Tony
@Tony:あなたがコンテンツスクリプト(と私が推測する 'XMLHttpRequest')を使用しているという事実は、質問に属しています。 。 –
質問にいくつかのコードを追加しました。私たちを手伝ってくれますか? – Tony