Search code examples
androidoauth-2.0uber-api

Failure to generate Uber oauth Token UnauthorizedException


I'm using the oauth2-essentials library because it was one of the recommended oauth libraries on the uber developers site, and it has been recently updated. My code looks like this:

executor = new HttpUrlConnectionExecutor();


    OAuth2AuthorizationProvider provider = new BasicOAuth2AuthorizationProvider(
            URI.create("https://login.uber.com/oauth/v2/authorize"),
            URI.create("https://login.uber.com/oauth/v2/token"),
            new Duration(1,0,3600) /* default expiration time in case the server doesn't return any */);


    OAuth2ClientCredentials credentials = new BasicOAuth2ClientCredentials(
            getString(R.string.uberClientId), getString(R.string.uberSecret));

    uberOAuthClient = new BasicOAuth2Client(
            provider,
            credentials,
            new LazyUri(new Precoded("my redirect url")) /* Redirect URL */);
    generateUberOAuthToken("my phone number", "my password");

}

public void generateUberOAuthToken(final String uName, final String password){

        new Thread() {
            public void run() {
                try {
                    uberOAuthToken = new ResourceOwnerPasswordGrant(
                            uberOAuthClient, new BasicScope("profile"), uName, password).accessToken(executor);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
}

The exception: org.dmfs.httpessentials.exceptions.UnauthorizedException: Authentication at 'https://login.uber.com/oauth/v2/token' failed. is always thrown. I've tried removing the redirect url so it should use the default from my dashboard, and I've tried added 1 and/or dashes to the phone number. The exception is always thrown when I request an access token. I know my account is setup correctly because this works fine in iOS. I feel like I must be missing something obvious. Anyone else run into this issue?


Solution

  • The token api did not recognize my phone number as a valid login parameter. It worked when I used my email instead.