Facebook SSO и регистрация стороннего сайта за один шаг? - PullRequest
8 голосов
/ 24 июля 2011

Да / Нет + еще вопрос:

Можно ли использовать систему единого входа Facebook и одновременно зарегистрировать пользователя для собственного веб-сайта / приложения?

Как и при необходимости всего одного нажатия клавиши со стороны пользователя.

Кроме того, есть ли рабочие примеры этого на iPhone и Android?

Из того, что я прочитал, есть процесс создания единого входа и отдельный процесс регистрации.

Причина в том, что я хотел бы вести собственный учет пользовательских данных в дополнение к тому, что Facebook дает мне через систему Insights, НО я хотел бы сделать это как можно более безболезненным.

t ;; dr это было сделано раньше, какие есть примеры и какая полезная и соответствующая документация доступна?

1 Ответ

2 голосов
/ 06 октября 2012

Не совсем уверен, что я вас правильно понимаю, но, предполагая, что вы хотите зарегистрировать пользователя в своей собственной системе без представления отдельного потока регистрации (?), Вы можете сделать следующее:

  1. Попросите пользователя авторизовать ваше приложение (т. Е. Через SSO или обычный поток FB - использование последней версии Facebook SDK вызовет соответствующий поток). Обязательно запросите дополнительные разрешения, которые вам понадобятся для вашей собственной регистрации.
  2. Как только ваше приложение получит уведомление об авторизации на Facebook, извлеките любые пользовательские данные, которые вам нужны для регистрации, через API Facebook (то есть, используя путь к графику /me?fields=id,name,email, чтобы получить идентификатор FB, имя и адрес электронной почты). Graph API Explorer хорош для проверки того, какие поля вы можете получить.
  3. Используйте ответ от (2), чтобы ввести POST в свою систему для создания учетной записи.
  4. Как только ваш запрос на создание аккаунта завершится, позвольте пользователю начать делать то, что он должен сделать в вашем приложении (= вы все готовы!). И, возможно, сохраните какой-нибудь идентификатор учетной записи на клиенте (устройстве), если он понадобится вам позже.

Чтобы сделать этот поток понятным для пользователя, вы, вероятно, должны показать индикатор загрузки / выполнения на шагах 1-4.

Документация Facebook SDK должна помочь вам выполнить шаг (1).

Пример кода (Objective-C) для шага (2) и частично (3):

- (void)facebookUserAuthorized
{
    [FBRequestConnection startWithGraphPath:@"me"
                                 parameters:[NSDictionary dictionaryWithObject:@"id,name,birthday,first_name,last_name,gender,email" forKey:@"fields"]
                                 HTTPMethod:@"GET"
                          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                              NSDictionary *userData = (NSDictionary*)result;
                              [self registerUserWithEmail:[userData objectForKey:@"email"]
                                               facebookId:[userData objectForKey:@"id"]
                                                   gender:[userData objectForKey:@"gender"]];
                          }];
}

- (void)registerUserWithEmail:(NSString*)email facebookId:(NSString*)facebookId gender:(NSString*)gender
{
    // Send a POST to your own server with the user details
}

И я уверен, что вы можете применить тот же принцип на Android. Проверьте Документы Facebook для Android , чтобы начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...