egormerkushev
@egormerkushev
iOS разработчик, автор PixelMixel

Как реализовать «Sign in with VK» на Parse.com?

Недавно Парс анонсировал поддержку Third-Party Authentication для веб-приложений blog.parse.com/2014/01/14/adding-third-party-authe...

У них есть даже пример для GitHub https://github.com/ParsePlatform/CloudCodeOAuthGit...
Так же в Client SDK появился новый метод для PFUser:

[PFUser becomeInBackground:@"session-token-here" block:^(PFUser *user, NSError *error) {
if (error) {
// The token could not be validated.
} else {
// The current user is now set to user.
}
}];

Но, как я понял, ему требуется "поддержка" со стороны Cloud Code.
Можно ли с помощью этой фичи реализовать вход с VK.com, аналогичный реализованному в Parse SDK Twitter и Facebook?
  • Вопрос задан
  • 4065 просмотров
Решения вопроса 1
t0rnik
@t0rnik
iOS Developer
Код для parse cloud ищет пользователя с переданным vkId и возвращает токен
Parse.Cloud.define("getTokenByVkId", function(request, response) {
                   
                   Parse.Cloud.useMasterKey();
                   var vkId = request.params.vkId;
                   if(!vkId) {
                   response.error("wrong parameters");
                   return ;
                   }
                   var query = new Parse.Query(Parse.User);
                   query.equalTo("vkId", vkId);
                   query.first({
                              success: function(user) {
                                  response.success(user.getSessionToken());
                              },
                              error: function(error) {
                                  response.error(error.description);
                              }
                              });
                   
                   });

Отправляем vkId авторизированного пользователя нашей функции в Parse Cloud и в ответ получаем токен по которому авторизируемся в самом Parse

iOS objective-c пример
//call parse cloud function
[PFCloud callFunctionInBackground:@"getTokenByVkId"
                                withParameters:@{@"vkId": vkUserId}
                                                 block:^(NSString* token, NSError *error) {
                    if (!error){
                       [PFUser becomeInBackground:token block:^(PFUser *user, NSError *error) {
                            <#code#>
                        }];
                    }else{
                        //TODO: handle error
                    }


Лично я при регистрации нового пользователя в Parse, сгенерированный пароль сохраняю в keychain и при повторном входе сначало проверяю его наличие и если его нет (скорее всего приложение запущено с другого устройства), то выполняю вход с помощью приведенного кода ParseCloud.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Сами же и отвечаете на свой вопрос, приводя пример реализации для Github. :) Берете этот код и правите хоть под ВК, хоть под Google+.

Там на гитхабе есть ссылка на подробный мануал:
https://parse.com/tutorials/adding-third-party-aut...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы