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.

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" } 

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:

  1. Iniciar sesión en la consola de errores
  2. Registra una nueva aplicación o edita la aplicación existente.
  3. Asegurar que el dominio de la aplicación coincida con la URL de redireccionamiento

introduzca la descripción de la imagen aquí

Espero que esto ayude.

  • Android resto cliente a magento
  • Cómo guardar el token de acceso de Oauth de forma segura en android
  • Autorización de Yahoo OAUTH: oauth_problem = "timestamp_refused"
  • Biblioteca para generar la firma HMAC-SHA1 OAuth en Android?
  • Crear firma para la autenticación Flickr (Android SDK)
  • Android y Twitter4j: ¿Manejando OAuth con un widget de Webview?
  • ¿Cómo implementar correctamente el inicio de sesión linkedIn?
  • ¿Cómo ingresar a twitter usando Oauth desde mi aplicación Android?
  • Estado de la instancia OAuth en Android
  • Almacenar el secreto del cliente de forma segura
  • ¿Existe ya una biblioteca OAuth2 para Java / Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.