Мне было интересно, можно ли создать систему входа в систему с помощью веб-сервиса, поскольку мне нужно добавить систему входа в мое приложение в Smartface App Studio?
Спасибо
Мне было интересно, можно ли создать систему входа в систему с помощью веб-сервиса, поскольку мне нужно добавить систему входа в мое приложение в Smartface App Studio?
Спасибо
Да, это возможно.
Одно из возможных решений — получить информацию о пользователе с сервера и сравнить пароль, который набрал пользователь, и пароль, пришедший с сервера, если они совпадают, авторизоваться. Лично я использую Firebase в качестве своего сервера, поэтому Я сохраняю имя объекта пользователя как его электронную почту, поэтому каждый раз, когда я хочу получить объект этого пользователя, я делаю запрос GET с его электронной почтой в URL-адресе.
Например.
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!");
}
}
});
Надеюсь, это поможет! :)
ИЗМЕНИТЬ
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)
.
ОБС. Только не забудьте изменить значение авторизации в правилах Firebase.
"auth = [YourAppSecret]"
(секрет приложения можно найти на вкладке секретов). И теперь каждый раз, когда вы звоните на сервер, добавляйте ?auth=YourAppSecret
в конце URL-адреса.
- person Luccas Clezar; 05.04.2016
https://exampleapp.firebaseio.com/Users/someUser.json?auth=yourAppSecret
- person Luccas Clezar; 05.04.2016
URL: "https://exampleapp.firebaseio.com/Users" + userEmail + ".json?auth=YourAppSecret"
. Если вы все еще не знаете, как это сделать, дайте мне знать, и я обновлю свой ответ полным примером. :)
- person Luccas Clezar; 06.04.2016
firebase.login(Pages.Page1.emailEditBox, Pages.Page1.passwordEditBox, function() { alert("User logged!") });
- person Luccas Clezar; 12.04.2016
".write": "auth == yourAppSecret", ".read": "auth == yourAppSecret"
. Опять же, убедитесь, что вы заменили yourAppSecret на Firebase Secret.
- person Luccas Clezar; 20.04.2016
"auth == 'yourAppSecret'"
- person Luccas Clezar; 21.04.2016