OAuth: App Id o redirect_uri no coincide con el código de autorización
App Id or redirect_uri does not match authorization code.
Ya que soy bastante el novato con OAuth y el desarrollo de aplicaciones, supongo que el error (como la mayoría del tiempo) es de mi parte. Mi aplicación tiene un botón (Iniciar sesión) que dirige al usuario hacia una vista web donde él, a través de OAuth, accede a la API de Misfit ( https://build.misfit.com/ ). Una vez que esté de acuerdo en compartir sus datos Misfit con mi aplicación, la vista web quiere redirigirlo a mi redirect_uri, pero siempre obtengo el mensaje de error mencionado anteriormente. Aquí está el código para la OAuthActivity:
public class OAuthActivity extends Activity { public static String OAUTH_URL = "https://api.misfitwearables.com/auth/dialog/authorize"; public static String OAUTH_ACCESS_TOKEN_URL = "https://api.misfitwearables.com/auth/tokens/exchange"; public static String CLIENT_ID = "ID"; public static String CLIENT_SECRET = "Secret"; public static String CALLBACK_URL = "http://iss.uni-saarland.de/"; public static String SCOPE = "public,birthday,email,tracking,session,sleeps"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auth_o); String url = OAUTH_URL + "?response_type=code" +"&client_id=" + CLIENT_ID + "&redirect_uri=" + CALLBACK_URL + "&scope=" + SCOPE; WebView webview = (WebView)findViewById(R.id.webview); webview.getSettings().setJavaScriptEnabled(true); final SharedPreferences prefs = this.getSharedPreferences( "com.iss_fitness.myapplication", Context.MODE_PRIVATE); webview.setWebViewClient(new WebViewClient() { public void onPageStarted(WebView view, String url, Bitmap favicon) { String accessTokenFragment = "access_token="; String accessCodeFragment = "code="; // We hijack the GET request to extract the OAuth parameters if (url.contains(accessTokenFragment)) { // the GET request contains directly the token String accessToken = url.substring(url.indexOf(accessTokenFragment)); prefs.edit().putString("Token", accessToken); } else if(url.contains(accessCodeFragment)) { // the GET request contains an authorization code String accessCode = url.substring(url.indexOf(accessCodeFragment)); prefs.edit().putString("Code", accessCode); String query = "grant_type=authorization_code" + "&client_id=" + CLIENT_ID + "&client_secret=" + CLIENT_SECRET + "&code=" + accessCode + "&redirect_uri=" + CALLBACK_URL; view.postUrl(OAUTH_ACCESS_TOKEN_URL, query.getBytes()); } } }); webview.loadUrl(url); } }
Sé que esto se supone de alguna manera secuestrar la URL de autorización para obtener el código de acceso, y si eso no está disponible, trate de obtener el token. Algunas personas proponen interrumpir la actividad antes de que quiera llevarme a mi redirect_uri, pero no tengo ni idea de cómo debo hacer eso.
- Android Tumblr Oauth-signpost 401
- Inicia sesión de Google en la aplicación de Android para consumir Cloud Endpoints backend
- Problema con OAuth, Twitter y Android: falla en la comunicación http con el servidor
- Enviar Gmail mediante programación mediante Auth Cookie
- LinkedIn scribe OAuth biblioteca no puede permitir el acceso a la cuenta de LinkedIn
Información adicional basada en las respuestas: – El URI de redirección registrado en Misfit Application Settings es el URI de redirección que utilizo en mi código. – He construido un manejador de Intent para mi aplicación para iniciar su actividad principal cuando se llama al URI de redireccionamiento.
==========================================
EN EL CLIENTE RESTO TENGO EL MISMO >>>>
POST: https://api.misfitwearables.com/auth/tokens/exchange
SOLICITUD:
{ "grant_type":"authorization_code", "code":{{USER CODE FROM AUTH}}, "redirect_uri":"SAME REDIRECT_URI AS IN AUTH", "client_id":{{my app id}}, "client_secret":{{my app secret}} }
RESPUESTA:
{ "error": "invalid_grant", "error_description": "App Id or redirect_uri does not match authorization code" }
- Autenticación social de la API Web de ASP.NET para Web y Mobile
- ¿Cómo usar el inicio de sesión de Samsung OAuth en Android Device?
- HttpURLConnection.getResponseCode () devuelve -1 en segunda invocación
- "Http: // {root_dir} / oauth / token" Archivo no encontrado en Magento para registrar la aplicación REST API
- Uso de Android AccountManager para la autorización OAuth2 de terceros
- Implementar OAuth2 con las credenciales de contraseña de propietario de recurso en Android
- Com.google.android.gms.auth.GoogleAuthException: Desconocido
- Android: controla la devolución de llamada de OAuth mediante el filtro de intenciones
Esto es un poco una suposición, pero este es un error similar que puede ver con google cuando no se registra su aplicación en la consola google api.
Si va a la consola de errores y registra su URL de redirección para su aplicación, debería funcionar:
- Iniciar sesión en la consola de errores
- Registra una nueva aplicación o edita la aplicación existente.
- Asegurar que el dominio de la aplicación coincida con la URL de redireccionamiento
Espero que esto ayude.
- Diálogo de alerta de Android con ActionBar habilitado
- Android: validación de la cuenta de Google Analytics