2016-11-18 2 views
-1

Ich versuche, Uber Login und Ride Request mit Uber-APIs zu integrieren. Ich habe den Login-Teil erfolgreich abgeschlossen und versucht, den Ride Request-Teil zu integrieren. Unten ist mein Code-Snippet für das -Uber Ride Anfrage mit API

SessionConfiguration config = new SessionConfiguration.Builder() 
       // mandatory 
       .setClientId("abc") 
       // required for enhanced button features 
       .setServerToken("xyz") 
       // required for implicit grant authentication 
       .setRedirectUri("https://login.uber.com/oauth/authorize") 
       // required scope for Ride Request Widget features 
       .setScopes(Arrays.asList(Scope.RIDE_WIDGETS, Scope.PROFILE, Scope.REQUEST)) 
       // optional: set Sandbox as operating environment 
       .setEnvironment(SessionConfiguration.Environment.SANDBOX) 
       .build(); 

     UberSdk.initialize(config); 

     OAuth2Credentials credentials = new OAuth2Credentials.Builder() 
       .setSessionConfiguration(config) 
       **.build();** 

     try { 
      String authorizationUrl = credentials.getAuthorizationUrl(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 

     Credential credential = credentials.authenticate(authorizationCode, userId); 
     CredentialsSession session = new CredentialsSession(config, credential); 
     RidesService service = UberRidesApi.with(session).createService(); 

Jedes Mal, wenn ich diese laufen und versuchen, das Protokoll zu überprüfen, ist es in der .build OAuth stürzt() Linie. Hier

ist der Fehler Ich erhalte -

java.lang.IllegalStateException: Client ID and secret must be set. 

Caused by: java.lang.IllegalStateException: Client ID and secret must be set. 
                        at com.uber.sdk.rides.client.utils.Preconditions.checkState(Preconditions.java:66) 
                        at com.uber.sdk.rides.auth.OAuth2Credentials$Builder.validate(OAuth2Credentials.java:170) 
                        at com.uber.sdk.rides.auth.OAuth2Credentials$Builder.build(OAuth2Credentials.java:181) 
                        at com.rahul.uberapi.android.demo.DemoActivity.onCreate(MainActivity.java:119) 
                        at android.app.Activity.performCreate(Activity.java:5990) 
                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)  
                        at android.app.ActivityThread.access$900(ActivityThread.java:154)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)  
                        at android.os.Handler.dispatchMessage(Handler.java:102)  
                        at android.os.Looper.loop(Looper.java:135)  
                        at android.app.ActivityThread.main(ActivityThread.java:5292)  
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at java.lang.reflect.Method.invoke(Method.java:372)  
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)  

Aber ich habe bereits die Client-ID und Geheim gesetzt.

Absolut verwirrt mit dem, was passiert. Bitte helfen Sie.

Antwort

0

Eines der Probleme ist die Umleitung URI, die Sie verwenden. Dies sollte im Entwicklerdashboard festgelegt werden und stellt die URL dar, auf die wir einen Benutzer umleiten, nachdem die Anwendung erfolgreich autorisiert wurde. Bitte beachten Sie das folgende Beispiel:

SessionConfiguration config = new SessionConfiguration.Builder() 
.setClientId("<CLIENT_ID>") 
.setClientSecret("<CLIENT_SECRET>") 
.setEnvironment(Environment.SANDBOX) 
.setScopes(Arrays.asList(Scope.PROFILE, Scope.REQUEST)) 
.setRedirectUri("<REDIRECT_URI>") 
.build(); 

OAuth2Credentials credentials = new OAuth2Credentials.Builder() 
.setSessionConfiguration(config) 
.build(); 

String authorizationUrl = credentials.getAuthorizationUrl(); 

Siehe entsprechende Java-API-Tutorial für ein funktionierendes Beispiel: https://developer.uber.com/docs/riders/ride-requests/tutorials/api/java

+0

Was die Umleitung URI sein sollte? Ich verwende "http: // localhost: 8000 /" für jetzt, wird das funktionieren? Ich habe die gleiche Umleitung UI auf Uber Entwicklerkonto registriert –