Могу ли я связать человека с twitter и facebook при разборе?
Я создаю приложение, в котором человек может зарегистрироваться с помощью facebook, twitter или электронной почты. Когда вы ищете друзей, вы можете связать свои facebook, твиттер-аккаунты.
Проблема в том, что если человек уже связан с facebook или twitter, я не могу связать его с другой учетной записью, поэтому каждый раз, когда человеку нужно искать друзей, ему нужно снова войти в систему.
Есть ли способ, которым я могу иметь как authdata для одного и того же пользователя, поэтому, когда пользователь связывает как твиттер, так и facebook, он покажет друзьям без необходимости повторного входа?
Спасибо!
Ответы
Ответ 1
Отличный вопрос. Это было тяжело для меня, чтобы найти ответ. К сожалению, таблица Parse User, которая имеет поля пользователя по умолчанию, которые уникальны и требует наличия только одного пользователя на одну учетную запись. Не имеет значения, как они входят (через Facebook, Twitter, E-mail, ect), может быть только один username
password
из полевого ect email
. Вы можете посмотреть, как они говорят об этом, и почему это так происходит здесь, в "Спросить обо всем" .
Я знаю, что это не идеальное решение для разработчиков, которые должны предоставить пользователю возможность на платформе, в которую они хотят войти. Если вы добавите оба пользователя, вам нужно будет помнить, была ли их учетная запись настроена через Facebook или Twitter в вашем случае.
Однако, если вы хотите сохранить/связать аспекты Facebook и Twitter с вашим проектом, вы можете вытащить электронную почту пользователей (при условии, что они используют один и тот же для своих учетных записей на Facebook и Twitter) из Facebook и Twitter и сделать аутентификация через их адрес электронной почты.
Надеюсь, что это поможет. Ура!
Ответ 2
Ответ - большой НЕТ. Поскольку Parse.com имеет только один класс пользователя для одного приложения, и в этом классе User мы имеем только один -authData- (данные аутентификации). Когда пользователь подписывается с учетными данными социальной сети, эти данные должны использоваться для сеанса. Этот AuthData состоит из максимум 1 типа.
Ответ 3
Имел ту же проблему, плюс я также хотел войти в Google+. Я сделал, чтобы создать объект Account
, который содержит следующее поле:
- Поставщик: String - Twitter, Facebook, Google,...
- uniqueId: String - содержит идентификатор Twitter, идентификатор Facebook и т.д.
- Пользователь: Указатель. Содержит пользователя, связанного с этим идентификатором.
Затем я создал script, который просматривает всех пользователей и экспортирует их authData
в несколько записей Account
. Я также добавил крюк afterSave на _User для переноса новых данных пользователей.
Теперь сложная часть... Так как Parse не дает нам никакого доступа для социального входа, мне пришлось обрабатывать все вручную в Cloud Code. Идея состоит в том, чтобы использовать SDK из Facebook и Twitter, чтобы получить идентификатор учетной записи пользователя и токен доступа.
Затем вы отправляете эти данные в облачную функцию loginFromFacebook
/LoginFromTwitter
и контролируете, что идентификатор Facebook/Twitter совпадает с маркером доступа (например, делая запрос к API-интерфейсу Facebook). Как только вы знаете, что у пользователя есть правильный код, вам нужно проверить, существует ли он в Account
. Если да, вы возвращаете (с ответом .success) токен сеанса пользователя Parse, связанный с этим идентификатором (поле Account.user), и используйте User.become
на клиенте, чтобы завершить вход пользователя. Если нет, вам нужно создать нового пользователя, добавить запись en в Account
и вернуть новый токен сеанса пользователя (+ делать User.become на клиенте).
Теперь, благодаря таблице Account
, вы можете легко связать/отменить связь с пользователями, просто изменив связанный идентификатор пользователя в таблице Account
. Вы также можете легко проверить друзей Facebook (если вы запрашиваете разрешение).
Ответ 4
Я не думаю, что это можно сделать. Поскольку parse.com
не допускает множественного связывания с одним и тем же пользователем. Кроме того, я бы очень сомневался, что обходной путь будет возможен из-за безопасности в Twitter и Facebook для связывания счетов. Поэтому я бы сказал, что нет никакой возможности иметь одну и ту же пользовательскую ссылку на Twitter и Facebook в Parse.
Итак, вы застряли в том, что вам нужно несколько раз вводить логин для поиска друзей (что, вероятно, не конец света, но далеко не идеальный) или просто выбор одного сервиса. Я лично просто использовал бы Facebook, потому что это не последователи и следование, а на самом деле общий друг. Это мое мнение, хотя я не знаю характера вашего заявления.