Why is Android Browser denying me permission to callback from OAuth?

I am trying to get OAuth working for a service provider website. Everything goes well with the authentication until the callback. It's actually calling back with the proper URL (the one I specified both on the provider's registration site as well as the call to provider.retrieveRequestToken()

I am doing this:

provider.retrieveRequestToken(consumer, "my-app:///" );

And the URL I actually get back is exactly what I'd expect - "my-app:///?[a bunch of params including my access token]"

But at this point the browser says I do not have permission to access that URL. My manifest is set up like so:

<activity android:name=".Selector"
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
             <action android:name="android.intent.action.VIEW" />
             <category android:name="android.intent.category.DEFAULT" />
             <category android:name="android.intent.category.BROWSABLE" />
             <data android:scheme="my-app"/>

Am I missing something? Maybe a permission?


try adding the permission for internet access in your manifest.xml

<uses-permission android:name="android.permission.INTERNET" />

I've implemented an intent-based OAuth callback in SMS Backup+. From user feedback I've found that a few browsers (e.g. Opera Mini) won't actually handle non-http schemes correctly, so this could be the issue as well. Try in an emulator with a stock browser first.

Some phones (Droid X) even ship with broken browsers by default, so this method doesn't work reliably across devices. I'm currently looking for a better solution, an alternative would be to use OOB callback handling, but that's not very user-friendly.

Need Your Help

How far can an object literal be nested?

javascript oop properties nested object-literal

I have found that it is possible to nest another property within an object literal property. Here is an example of this: