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 № 1Z 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:
- Otwórz twitter.com w UIWebView, określając nie
oauth_callback
parametr luboauth_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. - 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ć.