My app receives accessToken
, refreshToken
, expiryTimeInMillis
after doing uber webSetup. These I am storing in file via StoredCredential
. Whenever I have to create a session I create Credential
as follows by reading values stored in StoredCredential
.
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);
}
My Problem is:
The
accessToken
is expired, and I don't know how to renew it usingrefreshToken
.I thought Uber SDK handles renewing the accessToken as I am passing
accessToken
,RefreshToken
,ExpiryTime
, looking at the uber-java-sdk code.How will I be notified of the new
accessToken
after its renewed usingrefreshToken
.
I don't have client login for Uber. I don't have Uber app on my device. I am using uber-rides-java SDK to build app that uses uber API's to book/cancel/view ride details.
I am seeing this crash and not much help available related to my problem.
E/AndroidRuntime(20417): java.lang.IllegalArgumentException: no JSON input found E/AndroidRuntime(20417): at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) E/AndroidRuntime(20417): at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:49) E/AndroidRuntime(20417): at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:222) E/AndroidRuntime(20417): at com.google.api.client.json.JsonParser.parse(JsonParser.java:379) E/AndroidRuntime(20417): at com.google.api.client.json.JsonParser.parse(JsonParser.java:354) E/AndroidRuntime(20417): at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87) E/AndroidRuntime(20417): at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81) E/AndroidRuntime(20417): at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:459) E/AndroidRuntime(20417): at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307) E/AndroidRuntime(20417): at com.google.api.client.auth.oauth2.Credential.executeRefreshToken(Credential.java:570) E/AndroidRuntime(20417): at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489) E/AndroidRuntime(20417): at com.uber.sdk.rides.auth.CredentialsAuthenticator.refreshAndSign(CredentialsAuthenticator.java:97) E/AndroidRuntime(20417): at com.uber.sdk.rides.auth.CredentialsAuthenticator.reauth(CredentialsAuthenticator.java:77) E/AndroidRuntime(20417): at com.uber.sdk.rides.auth.CredentialsAuthenticator.refresh(CredentialsAuthenticator.java:58) E/AndroidRuntime(20417): at com.uber.sdk.rides.client.internal.RefreshAuthenticator.authenticate(RefreshAuthenticator.java:46) E/AndroidRuntime(20417): at okhttp3.internal.http.HttpEngine.followUpRequest(HttpEngine.java:893) E/AndroidRuntime(20417): at okhttp3.RealCall.getResponse(RealCall.java:276) E/AndroidRuntime(20417): at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) E/AndroidRuntime(20417): at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:142) E/AndroidRuntime(20417): at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187) E/AndroidRuntime(20417): at com.uber.sdk.rides.client.internal.ApiInterceptor.intercept(ApiInterceptor.java:57) E/AndroidRuntime(20417): at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187) E/AndroidRuntime(20417): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) E/AndroidRuntime(20417): at okhttp3.RealCall.access$100(RealCall.java:30) E/AndroidRuntime(20417): at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127) E/AndroidRuntime(20417): at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) E/AndroidRuntime(20417): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) E/AndroidRuntime(20417): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) E/AndroidRuntime(20417): at java.lang.Thread.run(Thread.java:818) W/ActivityManager( 1063): Force finishing activity com.iamplus.uberapp/.MainActivity