I have implement Uber- cabs in my project. When I don't have Uber app installed on user device. Uber login fails for first time with error msg "invalid_grant". But if immediately you login again it works well. Dont have issue if Uber app installed on user device.
Webview for Uber login:-
mPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
if (!mPreferences.contains(Constants.PREF_KEY_AUTH_UBER)) {
AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
alert.setTitle("Uber Login");
WebView mWebView = new WebView(getContext()) {
@Override
public boolean onCheckIsTextEditor() {
return true;
}
};
mWebView.getSettings().setJavaScriptEnabled(true);
WebViewClient client = new WebViewClient() {
@SuppressLint("CommitPrefEdits")
@Override
public void onPageFinished(WebView view, String url) {
Log.e(TAG, "onPageFinished: " + url);
if (url.contains("localhost:8888")) {
final String authToken = url.substring(url.indexOf("=") + 1);
presenter.postForUberToken(new UberRequestsPresenter.UberPresenterForToken() {
@Override
public void onTokenReceivedOnError() {
progressBarUberProductListLoading.setVisibility(View.GONE);
showToast(getActivity(), getResources().getString(R.string.error_msg_uber));
}
@Override
public void onTokenReceived(UberRequestsPresenter.UberTokenReceivedBody body) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getContext());
pref.edit().putString(Constants.PREF_KEY_AUTH_UBER, gson.toJson(body)).commit();
uberLogin(body, true);
}
}, authToken);
if (mDialogWebViewOla != null) {
mDialogWebViewOla.dismiss();
// if (getActivity().findViewById(R.id.progress_bar) != null)
// getActivity().findViewById(R.id.progress_bar).setVisibility(View.VISIBLE);
}
}
}
};
mWebView.setWebViewClient(client);
alert.setView(mWebView);
mDialogWebViewOla = alert.show();
mWebView.loadUrl(UBER_AUTH_HIT_URL);
url
after @onPageFinished and redirect_uri
are same. Getting 401 unauthorized error - "invalid_grant"
for first time login
I can't force user to ask for login again. Any alternative or solution. Please tell me if need more details
The invalid_grant
error shows up when:
grant_type
is not authorization_code
nor refresh_token
Please find more details in the POST /token documentation.