2015-09-28 13 views
12

Aktualizacja: Wygląda na to, że Twitter naprawił ten problem. Kliknięcie przycisku autoryzacji działa teraz! Dziękuję wszystkim za odpowiedzi.Disable Twitter Universal Deep Links

Mam UIWebView, który otwiera się i kieruje do Twitters Oauth/Authorize webpage. Użytkownik wpisuje się do danych Twittera i uwierzytelnia korzystanie z naszej aplikacji z kontem na Twitterze. Ten proces sprawdził się doskonale przed wydaniem aplikacji na Twittera 6.37 iOS. Co się dzieje teraz, kiedy WebView wykrywa https://twitter.com/oauth/authorize?oauth_token zamiast pozostać w WebView otwiera aplikację macierzystą na Twitterze i umiera. Jeśli odinstalujesz aplikację Twitter, wszystko działa tak, jak zwykle pozostaje w WebView. Jak mogę temu zapobiec? Chcę pozostać w moim interfejsie UIWebView i nie otwierać automatycznie precyzyjnych linków. Czytałem o zmianach linków precyzyjnych nowych adresów URL w iOS 9, ale nie wiem, jak zatrzymać je z mojej aplikacji do innych aplikacji natywnych. Dzięki za pomoc!

enter image description here

+0

Słyszałem raporty, że Facebook, Twitter i inne grupy blokują linki uniwersalne w swoich przeglądarkach internetowych. To sprawia, że ​​myślę, że musi istnieć sposób przechwytywania i wyłączania tego zachowania, przynajmniej z UIWebView i WKWebView (zdecydowanie nie z SFSafariViewController). –

+0

Zgadzam się, próbowałem wewnątrz metody shouldStartLoadWithRequest, ale nie mogę znaleźć sposobu obejścia tego. Tuż przed wyskoczeniem z mojej aplikacji wywołuje https://twitter.com/oauth/authorize?oauth_token jako UIWebViewNavigationTypeFormSubmitted. Jeśli zwrócę NIE w tym przypadku, nie zostanie przesłana strona. Byłoby miło, gdyby był delegat zwolniony, gdy zaczyna się uniwersalny link z aplikacji. – mikemike396

+0

Czy to jest dla Ciebie rozwiązanie praktyczne? Jestem ciekawy –

Odpowiedz

4

jako obejście, na ekranie uwierzytelniania twitter możemy użyć przycisku Go na iOS wpisywanie klawiatury zamiast przycisku logowania w widoku internetowym do czasu naprawienia Twittera. Proszę odnieść się do załączonego zrzutu ekranu dla jasności.

Screenshot for the workaround

+0

Wow to faktycznie działa! Świetne obejście! Mam nadzieję, że Twitter wie o tym problemie. Wysłałem tam bilet na twittercommunityforum. – mikemike396

1

Moja odpowiedź na to poprzez Xamarin pytanie:

Chyba Twitter usuwa/aktualizacje sekcji Aplikacje „https://www.twitter.com/apple-app-site-association”, aby umożliwić obejście lub wtórną OAuth, który nie jest w apple app plik-lokalizacji-stowarzyszenia Nie widzę, jak byś to zrobił. Te pliki są podpisane, a system iOS obsługuje je na poziomie systemu operacyjnego.

Nie grałem zbyt dużo z delegatem continueUserActivity i obiektem NSUserActivity, który jest przekazywany do aplikacji uruchamianych z linków UNI, ale nie widzę sposobu, aby uruchomiona aplikacja (np. Twitter) zwróciła kontrolę do oryginału app, i w tym momencie łańcuch wywołań Oauth i tak zostanie zerwany ...

  • Unikatowy. W przeciwieństwie do niestandardowych schematów adresów URL, uniwersalne linki nie mogą być zgłaszane przez inne aplikacje, ponieważ używają standardowych łączy HTTP lub HTTPS do Twojej witryny.

  • Zabezpiecz. Gdy użytkownicy instalują Twoją aplikację, system iOS sprawdza plik przesłany na Twój serwer internetowy, aby upewnić się, że Twoja witryna zezwala Twojej aplikacji na otwieranie adresów URL w jej imieniu. Tylko Ty możesz utworzyć i przesłać ten plik, więc powiązanie Twojej witryny z aplikacją jest bezpieczne.

Via: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

Chciałbym zgłosić jako problem (bug?) Na Twitterze za Dev forum: https://twittercommunity.com

+0

Dziękuję za wpis! Mam nadzieję, że istnieje rozwiązanie w przyszłości. Tutaj jest to pytanie opublikowane na stronie Twitter Community -> https://twittercommunity.com/t/disable-twitter-universal-deep-links/53580 – mikemike396

+0

Skończyło się na konwersji do używania uwierzytelniania na poziomie aplikacji, nie idealne, ponieważ musiałem zrezygnować (usuń) funkcje z aplikacji opartej na Xamarinie i uruchom aplikację Twitter, aby umożliwić użytkownikowi publikowanie, itp. – SushiHangover

+0

To wydaje się być jedynym rozwiązaniem. To nie jest dla nas pomysł, ponieważ mamy wiele platform, na których użytkownicy mogą się uwierzytelniać. Musielibyśmy więc zbudować uwierzytelnianie na poziomie aplikacji dla każdej platformy zamiast uwierzytelniania przez Internet. – mikemike396

3

Pobiegłem do tej kwestii, jak również i zorientowali się, że to dlatego, że mój punkt końcowy autoryzacji została ustawiona https://twitter.com/oauth/authorize?oauth_token="+oauthToken (wierzę, że to było w pierwotnej dokumentacji). Jeśli dodasz api jako subdomenę: https://api.twitter.com/oauth/authorize?oauth_token="+oauthToken, nie będzie to już powodować wyostrzania linków i ładowania aplikacji Twitter.

+0

Kup ten człowiek piwo! +++ – Dunc

+0

Używamy Twitterizer (https://github.com/Twitterizer/Twitterizer) i wygląda na to, że poprawnie ustawiono punkt końcowy. – mikemike396

+0

kup ten człowiek 2 piwa !!!!! –