Szukaj…


Przykład adresu URL wywołania zwrotnego z Instagram OAuth

Jednym z przypadków użycia zwrotnych adresów URL jest OAuth. Zróbmy to przy logowaniu na Instagramie: jeśli użytkownik wprowadzi swoje dane uwierzytelniające i kliknie przycisk Zaloguj się , Instagram zweryfikuje dane uwierzytelniające i zwróci access_token . Potrzebujemy tego access_token w naszej aplikacji.

Aby nasza aplikacja mogła słuchać takich linków, musimy dodać adres URL wywołania zwrotnego do naszej Activity . Możemy to zrobić, dodając <intent-filter/> do naszej Activity , która zareaguje na ten adres zwrotny. Załóżmy, że naszym zwrotnym adresem URL jest appSchema://appName.com . Następnie musisz dodać następujące wiersze do żądanego Activity w pliku Manifest.xml :

<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="appName.com" android:scheme="appSchema"/> 

Objaśnienie powyższych linii:

  • <category android:name="android.intent.category.BROWSABLE"/> sprawia, że aktywność docelowa pozwala się uruchomić przez przeglądarkę internetową w celu wyświetlenia danych, do których odwołuje się łącze.
  • <data android:host="appName.com" android:scheme="appSchema"/> określa nasz schemat i host naszego adresu URL wywołania zwrotnego.
  • Wszystkie te wiersze spowodują otwarcie określonego Activity za każdym razem, gdy wywoływany jest adres URL wywołania zwrotnego w przeglądarce.

Teraz, aby uzyskać zawartość adresu URL w Activity , należy zastąpić onResume() w następujący sposób:

@Override 
public void onResume() { 
    // The following line will return "appSchema://appName.com".
    String CALLBACK_URL = getResources().getString(R.string.insta_callback);
    Uri uri = getIntent().getData();
    if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
        String access_token = uri.getQueryParameter("access_token");
    }
    // Perform other operations here.
} 

Teraz odzyskałeś access_token z Instagrama, który jest używany w różnych punktach końcowych API Instagram.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow