2015-08-02 9 views
11

Tworzę aplikację, którą osoba może zarejestrować za pomocą Facebooka, Twittera lub e-maila. Szukając znajomych, może połączyć swoje konta na Facebooku, Twitterze.Czy mogę połączyć osobę z twittem i facebookiem podczas analizy?

Problem polega na tym, że jeśli dana osoba jest już powiązana z Facebookiem lub Twitterem, nie mogę połączyć jej z drugim kontem, więc za każdym razem, gdy osoba potrzebuje szukać przyjaciół, musi się ponownie zalogować.

Czy istnieje sposób, w jaki mogę mieć obie authdata do tego samego użytkownika, więc gdy użytkownik łączy zarówno Twittera, jak i Facebooka, pokaże znajomym bez konieczności ponownego logowania?

Dzięki!

+0

Zobacz https://stackoverflow.com/questions/16228930/parse-com-pfuser-linking-twitter-and-facebook-account – Russell

Odpowiedz

3

Świetne pytanie. Trudno było mi znaleźć odpowiedź na to pytanie. Niestety, tabela użytkownika parse, która ma domyślne pola użytkownika, które są unikalne i wymaga tylko jednego użytkownika na konto. Nie ma znaczenia jak się logują (przez Facebooka, Twittera, e-maila, itd.), Może być tylko jedno pole ect. Możesz oglądać, jak mówią o tym i dlaczego tak jest w ich Ask Parse Anything.

Wiem, że nie jest to idealne rozwiązanie dla programistów, którzy mogą dać użytkownikowi opcję na platformie, na której chcą się zalogować. Jeśli dodasz obu, użytkownik będzie musiał pamiętać, czy jego konto zostało skonfigurowane za pośrednictwem Facebooka lub Twittera w twoim przypadku.

Jeśli jednak chcesz zachować/powiązać aspekty Facebooka i Twittera z projektem, możesz być w stanie ściągnąć e-maile użytkowników (zakładając, że używają tego samego do kont Facebook i Twitter) z Facebooka i Twittera oraz wykonaj uwierzytelnienie za pośrednictwem adresu e-mail.

Nadzieję, że pomaga. Twoje zdrowie!

0

Nie sądzę, że można to zrobić. Od parse.com nie pozwala na wielokrotne łączenie tego samego użytkownika. Ponadto, bardzo wątpię, że obejście byłoby możliwe z powodu bezpieczeństwa na Twitterze i Facebooku dla łączenia kont. Dlatego powiedziałbym, że nie ma sposobu, aby mieć ten sam link użytkownika do Twittera i Facebooka w Parse.

Jesteś więc zmuszony do wielokrotnego logowania użytkownika, aby znaleźć znajomych (prawdopodobnie nie byłby to koniec świata, ale daleki od ideału) lub po prostu wybierając jedną usługę. Osobiście po prostu korzystałbym z Facebooka, ponieważ nie jest on zwolennikiem i podążaniem za nim i jest właściwie wspólnym przyjacielem. To tylko moja opinia, ponieważ nie znam charakteru twojej aplikacji.

2

Odpowiedź jest duża NIE. Ponieważ Parse.com ma tylko jedną klasę użytkownika dla jednej aplikacji i w tej klasie użytkownika mamy tylko jedną -authData- (dane uwierzytelniania). Za każdym razem, gdy użytkownik loguje się za pomocą poświadczeń sieci społecznościowej, dane te będą wykorzystywane do sesji. Ta AuthData składa się z maksymalnie 1 typu.

2

Miałem ten sam problem, a także chciałem zalogować się w Google+. To, co zrobiłem było stworzenie Account obiekt, który zawiera następujące pola:

  • Provider: String - Twitter, Facebook, Google, ...
  • uniqueId: String - zawiera identyfikator Twitter, Facebook ID, etc.
  • użytkownika: Pointer - Zawiera użytkownika powiązane z tym identyfikatorem

Potem stworzyłem skrypt przeglądania wszystkich użytkowników i eksportować swoje authDataAccount na kilka wpisów. Dodałem również hak AfterSave do _User, aby migrować dane nowych użytkowników.

Teraz najtrudniejsza część ... Ponieważ Parse nie daje nam żadnego hasła do logowania się w serwisie społecznościowym, musiałem obsługiwać wszystko ręcznie w Cloud Code. Chodzi o to, aby użyć SDK z Facebooka i Twittera, aby uzyskać identyfikator konta użytkownika i token dostępu. Następnie przesyłasz te dane do funkcji chmurowej loginFromFacebook/LoginFromTwitter i kontrolujesz, czy identyfikator Facebooka/Twittera pasuje do tokena dostępu (wykonując na przykład żądanie interfejsu API Graph na Facebooku). Gdy wiesz, że Twój identyfikator użytkownika jest poprawny, musisz sprawdzić, czy istnieje on w Account. Jeśli tak, zwrócisz (z response.success) token sesji użytkownika Parse skojarzony z tym id (pole Account.user) i użyj User.become na kliencie, aby zakończyć logowanie użytkownika. Jeśli nie, musisz utworzyć nowego użytkownika, dodać wpis en w Account i zwrócić token sesji nowego użytkownika (+ robi User.become na kliencie).

Teraz dzięki tabeli Account można łatwo łączyć i odłączać użytkowników, zmieniając skojarzony identyfikator użytkownika w tabeli Account. Możesz także łatwo sprawdzić znajomych na Facebooku (jeśli poprosisz o pozwolenie).

Powiązane problemy