Dave Allison
Dave Allison

Reputation: 375

Android : Handle OAuth callback using intent-filter

I am building an Android application that requires OAuth. I have all the OAuth functionality working except for handling the callback from Yahoo. I have the following in my AndroidManifest.xml :

  <intent-filter>
    <action android:name="android.intent.action.VIEW"></action> 
    <category android:name="android.intent.category.DEFAULT"></category> 
    <category android:name="android.intent.category.BROWSABLE"></category>
    <data android:host="www.test.com" android:scheme="http"></data> 
  </intent-filter>

Where www.test.com will be substituted with a domain that I own. It seems :

So can anybody help me with

Thanks for your help.

Upvotes: 15

Views: 8318

Answers (2)

Shashank Malviya
Shashank Malviya

Reputation: 765

For OAUTH please make sure you are using V2 because V1 will be deprecated soon.

 <intent-filter android:label="filter_react_native">
           <action android:name="android.intent.action.VIEW" />
           <category android:name="android.intent.category.DEFAULT"/>
           <category android:name="android.intent.category.BROWSABLE" />
           <data android:host="www.test.com" android:scheme="https"/>
     </intent-filter>

URI generated will be https://www.test.com

for

below example of an app data intent

 <data android:host="people" android:scheme="peopleapp"/>

uri generated will be peopleapp://people

Please check if you are using router, If yes then you should have people screen in you stack navigator.

At last,

For the best way to test your intent data uri is:

  1. Uninstall the existing app if not done yet.

  2. Sync and build the code again.

  3. Call a webview in your app with the uri peopleapp://people.

  4. It should work.

  5. if you are using simulator check the below link provided by android here

  6. Run this in your terminal(try adb devices to test).

    $ adb shell am start
         -W -a android.intent.action.VIEW
         -d <URI> <PACKAGE>
    
  7. URI will be peopleapp://people

  8. PACKAGE will be your package/application/ name ie..@string/app_name.

Hope this helps you.

Upvotes: 0

Dave Allison
Dave Allison

Reputation: 375

So I changed my approach to use a custom scheme, rather than a web URL and it now all works as expected.

So my callback URL is:
X://callback

and my intent-filter is:

<intent-filter>
    <action android:name="android.intent.action.VIEW"></action> 
    <category android:name="android.intent.category.DEFAULT"></category> 
    <category android:name="android.intent.category.BROWSABLE"></category> 
    <data android:scheme="X"></data> 
</intent-filter>

where X is the name of my customer scheme.

Upvotes: 14

Related Questions