Vista Web de Android

En mi aplicación, quiero que los usuarios puedan iniciar sesión con su cuenta de Facebook. Después de algunas búsquedas, soy capaz de averiguar esto aunque no creo que de esta manera es el mejor método. Utilicé una webview en mi interfaz de usuario y un webviewclient para detectar conmutaciones de url. Como entiendo, en Android, debo manejar todas las redirecciones en mi webviewclient (redirecciones de Facebook, varias redirecciones suceden cuando el usuario establece su correo electrónico y contraseña). Pero todo lo que necesito es analizar mi xml de salida y tomar una decisión de acuerdo al resultado de salida (redirigir a mi casa activiy o fallo, etc). Aquí está mi código, por favor dé sus sugerencias si el método más conveniente existe.

public class FbLoginActivity extends Activity { String fbLoginBaseUrl = "{my server url}/facebook/redirector.jsp?"; private ProgressDialog progressBar; WebView webView; int count = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fb_login); fbLoginBaseUrl += "usdId=NoSession:"; fbLoginBaseUrl += Subroutines.getInstance().getDeviceId() + "_L"; webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); progressBar = ProgressDialog.show(FbLoginActivity.this, "", "Page is loading..."); webView.setWebViewClient(new HelloWebViewClient()); webView.loadUrl(fbLoginBaseUrl); } private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); Log.v(Subroutines.TAG, url); return true; } @Override public void onPageFinished(WebView view, String url) { Log.i(Subroutines.TAG, "Finished loading URL: " +url); // if login screen loading finishes, cancel the progressdialog.. // twice redirecting happens to this sub url.. String subFace = "m.facebook.com/login.php"; if(url.indexOf(subFace) != -1 && ++count == 2){ if (progressBar.isShowing()) { progressBar.cancel(); } } // Permission redirecting.. String loginSub = "www.facebook.com/connect/uiserver.php?method=permissions.request"; if(url.indexOf(loginSub) != -1){ progressBar = ProgressDialog.show(FbLoginActivity.this, "", "Logging in..."); } // finally if my server makes a response.. String sub = "{my server url}/facebook/connect.jsp"; if(url.indexOf(sub) != -1){ Log.v(Subroutines.TAG, "my server makes a response.."); // xml parsing stuff.. // use url content to parse } } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Log.e(Subroutines.TAG, "Error: " + description); } } } 

Me gustaría obtener el SDK de Facebook y utilizar sus funciones

En pocas palabras usted hace esto:

 public Facebook facebook = new Facebook("appID"); 

Luego en crear o en cualquier lugar:

 facebook.authorize(this,String[] YourNeededPermissions, new DialogListener() { @Override public void onComplete(Bundle values) {} @Override public void onFacebookError(FacebookError error) {} @Override public void onError(DialogError e) {} @Override public void onCancel() {} }); 

Puedes ver esto aquí: http://developers.facebook.com/docs/guides/mobile/#android

Tengo realmente un problema similar en la integración del registro de Facebook con mi propio (pero no soy el desarrollador de Android). Le hice la pregunta aquí Facebook flujo de registro de Android, pero no sabía acerca de la webview. Que parece una buena solución, ¿Puedo contactar con usted por chat o por otros medios?

EDIT: Facebook acaba de actualizar su procedimiento de inicio de sesión: https://developers.facebook.com/docs/offline-access-deprecation/ como se puede ver, ahora el token que obtiene de SSO (o cualquier otro token de cliente) está vinculado sólo a su aplicación (hay una validación de token-app id-app secreto). El punto final es ahora

 https://graph.facebook.com/oauth/access_token? client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN 

Así que con el facebook sdk para android los pasos son: 1) obtener el usuario firmado 2) enviar el token al servidor 3) servidor de validar el token contra su app id y secreto de la aplicación 4) agregar sus propias características de seguridad

  • Cómo establecer un título diferente para el cuadro de diálogo de alerta cuando se carga la página WebView?
  • Android: comprueba si la solicitud es GET o POST
  • ShouldOverrideUrlLoading no funciona / captura los clics del enlace mientras la página se está cargando
  • El controlador onScaleChanged de WebView se llama varias veces
  • Proguard warning biblioteca clase android.webkit.WebView depende de la clase del programa android.webkit.WebViewClien
  • Compruebe el método onReceivedSslError () de un WebViewClient si se firma un certificado desde una CA propia auto-firmada
  • Android 4.4 dando ERR_CACHE_MISS error en onReceivedError para WebView volver
  • Android WebViewClient onReceivedError no se llama para un error 404
  • Android WebViewClient onLoadResource () llamada agian después de onPageFinished () cuando targetSdkVersion es 19
  • WebView - no puede descargar el archivo sin solicitarlo dos veces?
  • Log <GATE-M> DEV_ACTION_COMPLETED </ GATE-M> parece retrasar la ejecución en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.