/ / Jak sprawić, aby interfejs API Twittera przestrzegał parametru wywołania zwrotnego za pomocą OAuth? - iPhone, Twitter, Oauth

Jak uzyskać zgodność interfejsu Twitter API z parametrem zwrotnym za pomocą protokołu OAuth? - iphone, twitter, oauth

Pracuję nad aplikacją na iPhone'a, która idealnie się używaOAuth do komunikacji z Twitterem. Wiem, że wiele osób wykonuje przepływ pracy OAuth w swoich aplikacjach za pomocą UIWebView, ale nie zgadzam się z tym i wybieram Podejście Pownce.

Problem polega na tym, że Twitter ma cały ten schematpraca z aplikacjami komputerowymi przy użyciu numeru PIN. Kiedy rejestruję moją aplikację na Twitterze, mają formularz internetowy z pytaniem, czy jestem klientem stacjonarnym czy internetowym. Jeśli wybiorę klienta stacjonarnego, kiedy próbuję uzyskać autoryzację użytkownika, mogę ustawić parametr oauth_callback, ale Twitter go zignoruje po autoryzacji i pokazaniu numeru PIN. Jeśli w formularzu Twittera podam, że jestem klientem sieciowym, wymaga od mnie wpisania adresu URL, aby przekierować po autoryzacji. A ponieważ używam aplikacji na iPhone'a schemat URL, ich formularz internetowy nie sprawdza się podczas sprawdzania poprawności, ponieważ wydaje się, że akceptuje tylko adresy URL zgodne z protokołem HTTP.

Wygląda na to, że utknąłem - nie mogę powiedzieć „komputer”, ponieważ nie chcę zawracać sobie głowy pinezką, nie mogę powiedzieć „sieć” lub nie mogę użyć adresu URL aplikacji na telefon iPhone. Jakieś rozwiązanie tego?

Odpowiedzi:

8 dla odpowiedzi № 1

Z Twojego pytania:

Wiem, że wiele osób wykonuje przepływ pracy OAuth wewnątrz swoich aplikacji za pomocą UIWebView, ale nie zgadzam się z tym i stosuję podejście Pownce.

Artykuł Pownce sugeruje, że rzuciłeś swójAplikacja i otwarcie Mobile Safari w celu wykonania kroku uwierzytelnienia jest problematyczne, dlatego że użytkownicy otrzymywali złe recenzje od użytkowników za zrobienie tego w ten sposób. Wystąpił także wskaźnik awaryjności około 40%.

Rozwiązaniem Pownce jest użycie UIWebViewzamiast tego twoje zgłoszenie, więc mam wrażenie, że źle zrozumiałeś ich rekomendacje. Biorąc to pod uwagę, określają to jako „naiwne” rozwiązanie, a następnie sugerują kilka teoretycznych „idealnych” rozwiązań.

Inną kwestią, której możesz nie zdawać sobie sprawy, jest to, że aplikacje komputerowe (przy użyciu metody „poza pasmem” / numeru pin) i aplikacje internetowe muszą otwierać witrynę Twittera w wbudowanej lub zewnętrznej przeglądarce.

Więc masz dwie możliwości na iPhonie:

  1. Otwórz twitter.com w UIWebView, określając nie oauth_callback parametr lub oauth_callback=oob aby rozpocząć przepływ poza pasmem oparty na pinach.Następnie użytkownik musi skopiować pinezkę za pomocą funkcji kopiuj-wklej iPhone'a, ręcznie zamknąć UIWebView i wkleić pinezkę do Twojej aplikacji. Pin może być następnie użyty do konwersji na token dostępu.
  2. Zrób to tak, jak robią to wszyscy inni (UIWebView + custom-uri://foo.bar w parametrze callback).

Z oczywistych powodów pierwsza opcja jest dość bzdurna i naprawdę przydatna tylko na platformach, na których Twitter nie może przekierować do niestandardowego identyfikatora URI.


0 dla odpowiedzi nr 2

Prostym rozwiązaniem może być utworzenie strony HTTP, która zawsze wysyła przekierowanie 301 do niestandardowego schematu adresu URL, a następnie dostarcza ten adres URL HTTP do internetowego interfejsu API serwisu Twitter.

Poza tym odpowiedź Nathana jest bardzo kompletna.


0 dla odpowiedzi № 3

Oto jak to robię: powiedz Twitterowi, że jesteś aplikacją internetową i utwórz stary adres URL HTTP: //, aby zadowolić Twittera podczas rejestracji klienta oauth.

Następnie w aplikacji przekaż adres URL, który chcesz, w parametrze wywołania zwrotnego. Twitter (z mojego doświadczenia) korzysta z tego, który mu podajesz.


0 dla odpowiedzi nr 4

Możesz użyć pośredniej witryny internetowej dlapoświadczenie. Twoja aplikacja tworzy unikalny identyfikator (oparty na sprzęcie?) I przechowuje go. Następnie rejestruje wysłanie użytkownika do uwierzytelnienia i wysyła unikalny identyfikator do Twojej witryny. Następnie przekierowuje użytkownika do Twojej witryny. Twoja witryna wysyła następnie użytkownika do Twittera przy użyciu protokołu OAuth. Użytkownik wraca do Twojej witryny, a Ty oznaczasz unikalny identyfikator jako uwierzytelniony i przechowujesz informacje uwierzytelniające. Użytkownik uruchamia ponownie aplikację na iPhonie, odczytuje, że wysłał użytkownika do uwierzytelnienia i kontaktuje się z Twoją witryną za pomocą unikalnego identyfikatora - i wczytuje informacje uwierzytelniające.

Długi czas i potrzebuje innej strony internetowej, ale powinna działać.