Mi aplicación Android utiliza la biblioteca Java OAuth, encontró here para la autorización en Twitter. Puedo obtener un token de solicitud, autorizar el token y obtener un reconocimiento, pero cuando el navegador prueba la URL de devolución de llamada para volver a conectarse con mi aplicación, no usa la URL que proporciono en el código, sino que usa la que proporcioné al registrarme. con Twitter.OAuth + Twitter en Android: la devolución de llamada falla
Nota:
1. Al registrar mi solicitud con twitter, que proporcionan una llamada hipotética vuelta url: http://abz.xyc.com y establecer el tipo de aplicaciones como el navegador.
2. He proporcionado una url de devolución de llamada en mi código "myapp" y he agregado un filtro de intención para mi actividad con la categoría y el esquema de datos navegables como "myapp".
3. URL llamada cuando la autorización contiene la URL de devolución de llamada, especifiqué en el código.
¿Alguna idea de lo que estoy haciendo mal aquí?
código relevante:
public class FirstActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
OAuthAccessor client = defaultClient();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(client.consumer.serviceProvider.userAuthorizationURL + "?oauth_token="
+ client.requestToken + "&oauth_callback=" + client.consumer.callbackURL));
startActivity(i);
}
OAuthServiceProvider defaultProvider()
{
return new OAuthServiceProvider(GeneralRuntimeConstants.request_token_URL,
GeneralRuntimeConstants.authorize_url, GeneralRuntimeConstants.access_token_url);
}
OAuthAccessor defaultClient()
{
String callbackUrl = "myapp:///";
OAuthServiceProvider provider = defaultProvider();
OAuthConsumer consumer = new OAuthConsumer(callbackUrl,
GeneralRuntimeConstants.consumer_key, GeneralRuntimeConstants.consumer_secret,
provider);
OAuthAccessor accessor = new OAuthAccessor(consumer);
OAuthClient client = new OAuthClient(new HttpClient4());
try
{
client.getRequestToken(accessor);
} catch (Exception e)
{
e.printStackTrace();
}
return accessor;
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
super.onResume();
Uri uri = this.getIntent().getData();
if (uri != null)
{
String access_token = uri.getQueryParameter("oauth_token");
}
}
}
// Manifest file
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp"/>
</intent-filter>
</activity>
</application>
Gracias por su respuesta. 1. Puede citar una referencia para su extracto: "Twitter no respeta las devoluciones de llamada solicitadas en OAuth y solo redirigirá a la URL de devolución de llamada especificada en la Configuración de la aplicación (tenga en cuenta que no se permite" localhost ")." 2. Sí, me hizo comprobar el Oauth-devolución de llamada-a-androide pregunta y haber puesto mi tipo de aplicación (es decir Browser) en consecuencia. Gracias de nuevo. – Samuh
Agregado enlace a la API de Twitter anuncian. –
Si las devoluciones de llamada solicitada por OAuth las solicitudes no se cumplen, ¿cómo puedo llamar a mi solicitud de autorización de publicación posterior? Twitter no acepta las URL de estilo Android, estas deben ser anuladas. ¿Cuáles son las alternativas si lo anterior no funciona? Por favor ayuda. [Obtendrá 10 puntos en este momento; 125 después de contestar esta última pregunta: P] – Samuh