Подключение методов Python - PullRequest
3 голосов
/ 24 марта 2011

В настоящее время я использую Oauth, чтобы позволить пользователю войти в систему через Foursquare, затем я создаю новый сеанс для этого пользователя. Если пользователь является новичком в системе, к которой его просят войти через Hunch, тогда он может создать профиль пользователя на основе информации из обеих систем. У меня есть оба входа в каждое приложение отдельно, но как я могу связать пользователя, вошедшего в Foursquare, с пользователем в Hunch. Моя идея заключалась в том, чтобы как-то создать ссылку на идентификатор сеанса в модели пользователя или использовать идентификатор сеанса в качестве параметра для входа в систему, но я не уверен, что это будет лучшей идеей. Есть ли другой способ, которым я могу создать ассоциацию?

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Самый простой способ сделать это будет выглядеть примерно так:

  1. Отправьте пользователя на foursquare для входа в систему
  2. Когда пользователь вернется, создайте для него запись в хранилище данных.
  3. Отправьте пользователя в Hunch для входа, но включите идентификатор записи, созданной на шаге 2, в URL продолжения.
  4. Когда пользователь вернется, используйте идентификатор, встроенный в URL, чтобы добавить информацию Hunch пользователя в его запись пользователя.
0 голосов
/ 24 марта 2011

Вы можете создать родительскую ассоциацию так, чтобы SiteUser был родителем FoursquareAuth и HunchAuth.

Когда пользователь сначала входит в систему с Foursquare, вы создаете модель SiteUser, а затем создаете модель FoursquareAuth с parent=just_created_user. Затем, когда вы отправляете пользователя для аутентификации посредством догадки, вы включаете идентификатор пользователя или идентификатор сеанса в параметр обратного вызова. Когда происходит обратный вызов, вы получаете ключ пользователя и создаете HunchAuth с parent=previously_created_user.

Модель SiteUser содержит объединенную информацию из обоих источников (имя, местоположение, последняя регистрация и т. Д.). Модели *Auth содержат только те гарантированные уникальные идентификаторы, которые предоставляются каждым поставщиком (user_id, access_token и т. Д.).

Таким образом, если у вас есть пользовательский объект, вы можете найти данные аутентификации Foursquare или Hunch (используя фильтр предков), и вы можете найти пользователя, загрузив любую модель *Auth и выбрав ее parent().

(примечание: я вызываю модель SiteUser, чтобы не путать ее с объектом User, доступным в App Engine)

...