2016-04-03 8 views

答えて

0



はい、それは可能です。
可能な解決策の1つは、サーバからユーザの情報を取得し、ユーザが入力したパスワードとサーバから来たパスワードが同じであればログインして比較することです。私は個人的にFirebaseをサーバとして使用します。ユーザーのオブジェクト名を電子メールとして保存するので、このユーザーのオブジェクトを取得するたびに、そのURLで電子メールでGETリクエストを行います。例えば、
など。

var webclient = new SMF.Net.WebClient({ 
 
    URL : "https://exampleapp.firebaseio.com/Users/[email protected]", 
 
    httpMethod : "GET", 
 
    ... 
 
    onSyndicationSuccess : function(e){ 
 
    var response = JSON.parse(e.responseText); 
 
    if(response.password === Pages.Page1.UserPassword.text){ 
 
     //Login 
 
    } else { 
 
     alert("Wrong Password!"); 
 
    } 
 
    } 
 
});

役に立てば幸い! :)


EDIT

var ROOT_URL = "https://exampleapp.firebaseio.com/"; //Change to your Firebase App 
 
var FIREBASE_CREDENTIAL = "yourAppSecret"; //Change to your Firebase App Secret 
 

 
var firebase = { 
 
    register : function (email, password, callback) { 
 
     var emailReplace = email.replace(/\./g, ","); 
 
     var beginRegister = function() { 
 
      requestObj = { 
 
       "email" : email, 
 
       "password" : password 
 
      }; 
 
      var requestJSON = JSON.stringify(requestObj); 
 
      var wcRegister = new SMF.Net.WebClient({ 
 
        URL : ROOT_URL + "Users/" + emailReplace + ".json?auth=" + FIREBASE_CREDENTIAL, 
 
        httpMethod : "POST", 
 
        requestHeaders : ['Content-Type:application/json', 'X-HTTP-Method-Override:PATCH'], 
 
        requestBody : requestJSON, 
 
        onSyndicationSuccess : function (e) { 
 
         //Registered, do something 
 
         callback(); 
 
        }, 
 
        onServerError : function (e) { 
 
         //Do something 
 
        } 
 
       }); 
 
      wcRegister.run(true); 
 
     }; 
 
     var isTaken = new SMF.Net.WebClient({ 
 
       URL : ROOT_URL + "Users/" + emailReplace + ".json?auth=" + FIREBASE_CREDENTIAL, 
 
       httpMethod : "GET", 
 
       requestHeaders : ["Content-Type:application/json"], 
 
       onSyndicationSuccess : function (e) { 
 
        var response = JSON.parse(isTaken.responseText); 
 
        if (response !== null) { 
 
         //Email is taken, do something 
 
        } else { 
 
         beginRegister(); //Email is not taken, continue 
 
        } 
 
       }, 
 
       onServerError : function (e) { 
 
        //Server Error, do something 
 
       } 
 
      }); 
 
     isTaken.run(true); 
 
    }, 
 
    login : function (email, password, callback) { 
 
     var emailReplace = email.replace(/\./g, "%2C"); 
 
     var wcLogin = new SMF.Net.WebClient({ 
 
       URL : ROOT_URL + "Users/" + emailReplace + ".json?auth=" + FIREBASE_CREDENTIAL, 
 
       httpMethod : "GET", 
 
       requestHeaders : ["Content-Type:application/json"], 
 
       onSyndicationSuccess : function (e) { 
 
        var responseText = JSON.parse(wcLogin.responseText); 
 
        if (responseText) { 
 
         if (password === responseText.password) { 
 
          //User logged, do something 
 
          callback(); 
 
         } else { 
 
          //Password is wrong, do something 
 
         } 
 
        } else { 
 
         //User doesn't exist, do something 
 
        } 
 
       }, 
 
       onServerError : function (e) { 
 
        //Server error, do something 
 
       } 
 
      }); 
 
     wcLogin.run(true); 
 
    } 
 
    }

ところ、(空きスペースに)どこかにグローバルスコープでこのコードを入れて、あなたは、ユーザーがログインするときに、firebase.login(someEmail, somePassword, callback)を使用コールバックは、ログインが完了したときに実行したい機能です。ユーザーを登録する場合は、firebase.register(someEmail, somePassword, callback)を使用します。

OBS。 Firebaseルールのauth値を変更することを忘れないでください。

+0

Firebase REST APIを使用すると、FirebaseのSimple Authやその他の認証方法を使用できません。ですから、firebaseのカスタム認証を使ってauthメソッドを自分で実装することはできますが、私はそれをお手伝いできません。私がやったのは、Firebaseにルールを追加して、アプリの秘密を使わずにサーバーに何かを読んだり(または書き込む)ことができないようにすることでした。これを行うには、アプリのルールに行き、.readと.writeメソッドを '' auth = [YourAppSecret] ''(アプリケーションの秘密は秘密のタブにあります)で更新してください。そして今、サーバを呼び出すたびに、 '?auth = YourAppSecret'をURLの最後に追加します。 –

+0

あなたのURLは次のようなものになります: 'https://exampleapp.firebaseio.com/Users/someUser.json?auth = yourAppSecret' –

+0

FireClientのURLをWebクライアントとして使用しましたが、クライアントの使用方法がわかりませんログインシステム –

関連する問題