2016-07-19 15 views
-2

uber webSetupを実行した後、私のアプリはaccessToken,refreshTokenexpiryTimeInMillisを受け取っています。これらはStoredCredentialでファイルに保存されています。セッションを作成する必要があるときはいつでも、StoredCredentialに格納された値を読み取ることによって、Credentialを次のように作成します。Uber Refresh Authenticatorクラッシュ

private Credential createCredential(){ 
    Credential.Builder builder = new Credential.Builder(new Credential.AccessMethod() { 
     @Override 
     public void intercept(HttpRequest request, String accessToken) throws IOException { 
      /** 
      * Do nothing 
      */ 
     } 

     @Override 
     public String getAccessTokenFromRequest(HttpRequest request) { 
      /** 
      * Do nothing 
      */ 
      return null; 
     } 
    }); 
    builder.setTransport(new MockHttpTransport()); 
    builder.setJsonFactory(new MockJsonFactory()); 
    builder.setClientAuthentication(new BasicAuthentication("user","pass")); 

    String query = ""; 
    try { 
     query = URLEncoder.encode("mock", "utf-8"); 
    } catch (UnsupportedEncodingException e) { 
     Log.v(TAG,"UnsupportedEncodingException "); 
    } 
    String url = "http://mockaddress.com/search?q=" + query; 
    builder.setTokenServerEncodedUrl(url); 
    return builder.build(); 
} 


public void setCredentialsFromWebSetup(String accessToken, String refreshToken, long expire_at){ 
    credential = createCredential(); 
    credential.setAccessToken(accessToken); 
    credential.setRefreshToken(refreshToken); 
    credential.setExpirationTimeMilliseconds(expire_at); 
} 

私の問題は、次のとおりです。

  1. accessTokenの有効期限が切れている、と私はrefreshTokenを使用して、それを更新する方法がわかりません。

  2. 私はユーバーSDKは、私はユーバー-のjava-sdkのコードを見て、accessTokenRefreshTokenExpiryTimeを渡していますようaccessTokenを更新扱うと思いました。

  3. refreshTokenを使用して更新後に新しいaccessTokenの通知を受ける方法を教えてください。

私はUberのクライアントログインを持っていません。私は自分のデバイスにUberアプリを持っていません。私はuber-rides-java SDKを使用して、uber APIを使用して予約/キャンセル/乗車の詳細を表示するアプリを構築しています。

私はこのクラッシュを見ていて、私の問題に関連する多くの助けがありません。

E/AndroidRuntime(20417):java.lang.IllegalArgumentExceptionが:NO JSON入力 E/AndroidRuntime(20417)が見つかりません:com.google.api.client.repackaged.com.google.common.baseで。前提条件。チェックアークマーク(Preconditions.java:92) E/AndroidRuntime(20417):com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:49) E/AndroidRuntime(20417):com。 google.api.client.json.JsonParser.startParsing(JsonParser.java:222) E/AndroidRuntime(20417):com.google.api.client.json.JsonParser.parse(JsonParser.java:379) E/AndroidRuntime(20417):com.google.api.client.json.JsonParser.parse(JsonParser.java:354) E/AndroidRuntime(2041) 7):com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87) E/AndroidRuntime(20417):com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java :81) E/AndroidRuntime(20417):com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:459) E/AndroidRuntime(20417):com.google.api.client.auth .oauth2.TokenRequest.execute(TokenRequest.java:307) E/AndroidRuntime(20417):com.google.api.client.auth.oauth2.Credential.executeRefreshToken(Credential.java:570) E/AndroidRuntime(20417) ):com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489) E/AndroidRuntime(20417):com.uber.sdk.rides.auth.CredentialsAuthenticator.refreshAndSign(CredentialsAuthenticator。 java:97) E/AndroidRuntime(2041 (CredentialsAuthenticator.java:77) E/AndroidRuntime :58) E/AndroidRuntime(20417):com.uber.sdk.rides.client.internal.RefreshAuthenticator.authenticate(RefreshAuthenticator.java:46) E/AndroidRuntime(20417):okhttp3.internal.http.HttpEngine .httpEngine.java:2793)。(Androidの場合は、次のように入力してください。okrttp3.RgingCall $ ApplicationInterceptorChain.proceed(RealCall.java:187) E/AndroidRuntime(20417):okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:142) E/AndroidRuntime(20417) E/AndroidRuntime(20417):com.uber.sdk.rides.client.internal.ApiInterceptor.intercept(ApiInterceptor.java:57) E/AndroidRuntime(20417):okhttp3.RealCall $ ApplicationInterceptorChain.proceed(RealCall。 okrttp3.RealCall.access $ 100(RealCall.java:30) E/AndroidRuntime(20417):okhttp3.RealCall.access $ 100(RealCall.java:30)E/AndroidRuntime(20417):okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) E/AndroidRuntime AndroidRuntime(20417):okhttp3.RealCall $ AsyncCall.execute(RealCall.java:127) E/AndroidRuntime(20417):okhttp3.internal.NamedRunnable.rで(/)://AndroidRuntime(20417):java.util.concurrent.ThreadPoolExecutor $でのun(NamedRunnable.java:32) E/AndroidRuntime(20417):java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) Worker.run(ThreadPoolExecutor.java:587) E/AndroidRuntime(20417):java.lang.Thread.run(Thread.java:818) W/ActivityManager(1063):強制終了アクティビティcom.iamplus.uberapp/.MainActivity

+0

あなたのコードの上に何かを実行しようとしていたより多くの情報を提供してください。 –

答えて

0

あなたはAndroid上でUber Java SDKを使用しているようです。 Google OAuth Credentialクラスを使用していないUber Android SDKをご利用ください。軽量な実装が可能です。

+0

はい私はAndroid上でUber Java SDKを使用しています。私はそれにUberアプリを持っていないSmartwatchに取り組んでいます。 Uber Android SDKにはUberアプリが必要です。私がリフレッシュトークを理解していて何が間違っていて、このクラッシュを引き起こしているのか分からないのであれば教えてください。 – user1479604