Cómo recuperar Twitter y Facebook Autenticación y Token a través de las clases de Administrador de cuentas de Android
Quiero recuperar token a través de las clases de Account Manager. Aquí está el código de la muestra que trabaja para el gorjeo pero no para el plz del facebook me ayuda.
public class AccountManagerActivity extends Activity { AccountManager mAccountManager; AccountManagerFuture<Bundle> c; String token; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mAccountManager = AccountManager.get(this); Account[] acc = mAccountManager.getAccounts(); for (int i = 1; i < acc.length; i++) { System.out.println("Account name==" + acc[i].name); System.out.println("Account Type==" + acc[i].type); } AuthenticatorDescription[] ad = mAccountManager.getAuthenticatorTypes(); for (int i = 1; i < ad.length; i++) { System.out.println("AuthenticatorDescription==" + ad[i].type); } tokenForTwitter(); tokenForFacebook(); } private void tokenForFacebook() { Account[] accts = mAccountManager .getAccountsByType("com.facebook.auth.login"); int i = 0; if (accts.length > 0) { System.out.println("here"); Account acct = accts[0]; c = mAccountManager.getAuthToken(acct, "com.facebook.auth.token" , null, this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> arg0) { try { Bundle b = arg0.getResult(); System.out.println("Facebook THIS AUHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN)); Intent launch = (Intent) b .get(AccountManager.KEY_INTENT); if (launch != null) { startActivityForResult(launch, 0); return; } } catch (Exception e) { System.out.println("EXCEPTION@AUTHTOKEN"); } } }, null); c = mAccountManager.getAuthToken(acct, "com.facebook.auth.token.secret" /* * what goes here */, null, this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> arg0) { try { Bundle b = arg0.getResult(); System.out.println("Facebook THIS AUHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN)); Intent launch = (Intent) b .get(AccountManager.KEY_INTENT); if (launch != null) { startActivityForResult(launch, 0); return; } } catch (Exception e) { System.out.println("EXCEPTION@AUTHTOKEN"); } } }, null); // mHandler.sendMessageDelayed(mHandler.obtainMessage(CALL), 0); i++; } } public void tokenForTwitter() { Account[] accts = mAccountManager .getAccountsByType("com.twitter.android.auth.login"); int i = 0; if (accts.length > 0) { System.out.println("here"); Account acct = accts[0]; c = mAccountManager.getAuthToken(acct, "com.twitter.android.oauth.token" /* what goes here */, null, this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> arg0) { try { Bundle b = arg0.getResult(); System.out.println("twitter THIS AUHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN)); Intent launch = (Intent) b .get(AccountManager.KEY_INTENT); if (launch != null) { startActivityForResult(launch, 0); return; } } catch (Exception e) { System.out.println("EXCEPTION@AUTHTOKEN"); } } }, null); c = mAccountManager.getAuthToken(acct, "com.twitter.android.oauth.token.secret" /* * what goes here */, null, this, new AccountManagerCallback<Bundle>() { @Override public void run(AccountManagerFuture<Bundle> arg0) { try { Bundle b = arg0.getResult(); System.out.println("twitter THIS AUHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN)); Intent launch = (Intent) b .get(AccountManager.KEY_INTENT); if (launch != null) { startActivityForResult(launch, 0); return; } } catch (Exception e) { System.out.println("EXCEPTION@AUTHTOKEN"); } } }, null); // mHandler.sendMessageDelayed(mHandler.obtainMessage(CALL), 0); i++; } } }
- ¿Por qué el método getOAuthAccessToken siempre dispara la excepción en la api de twitter4j?
- Cómo crear un botón de Twitter en Android?
- Comprueba si el usuario ha accedido a twitter
- ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory: Android
- Por qué este error '- La aplicación de sólo lectura no puede POST'
- HttpsURLConnection setDoOutput (true) no funciona
- Twitter Oauth Callback getOAuthRequestToken null
- Oauth_callback en Android
- Error de Qucikblox: para iniciar sesión en Android en Android
- Crear un "Tweet este botón" para compartir información sólo en Twitter no es tan fácil
- La conexión de twitter falló
- Cómo publicar un mensaje en la pared de twitter con twitter integrar la aplicación de Android
- Compartir en Facebook en android (como twitter)
Llame a AccountManager.getAccountsByType(null)
para recuperar todas las cuentas y compruebe que los datos de cuenta devueltos incluyen la información que necesita. Simplemente puede no estar expuesto.
Intente llamar a AccountManager.blockingGetAuthToken
en AccountManager.blockingGetAuthToken
lugar. Además, asegúrese de que su manifiesto tenga el permiso USE_CREDENTIALS
establecido correctamente.
Puedes ver esta discusión Cómo recuperar un Facebook-AuthToken de las cuentas guardadas en Android
Pero también sugeriría Facebook SDK
con permiso de acceso sin conexión (este permiso hace que el token de acceso devuelto por el punto final de OAuth sea de larga vida, de lo contrario el token de autenticación es válido sólo durante 1 hora).
También puede crear intento y obtener el token de la aplicación de facebook
Intent intent = new Intent(); intent.setClassName("com.facebook.katana", "com.facebook.katana.ProxyAuth"); intent.putExtra("client_id", apiKey); intent.putExtra("scope", scope); try { activity.startActivityForResult(intent, requestCode); } catch (ActivityNotFoundException e) { return false; }
Entonces onActivityResult(int requestCode, int resultCode, Intent data)
de su actividad puede obtener el token usando
data.getStringExtra("access_token");
Sólo para información, la parte de la aplicación facebook de getAuthToken no está implementada. Cuando lo descompila, ve que acaba de devolver null.
Debe utilizar el SDK de Facebook.
- ¿Cómo puedo convertir un cuerpo de respuesta exitoso en un tipo específico usando retrofit?
- Pregunta teórica: cargar el archivo XML-Layout externo en Android