Webview Android Facebook Login
Dans mon application, je veux faire les utilisateurs d'être en mesure de se connecter avec leur Facebook compte. Après quelques recherches, je suis en mesure de comprendre cela bien que je ne pense pas que cette façon est la meilleure méthode. J'ai utilisé une webview dans mon INTERFACE, et un webviewclient de sens url commutations. Ce que je comprends, Sur Android, je dois gérer toutes les redirections dans mon webviewclient (Facebook redirections, plusieurs redirections se produire lorsque l'utilisateur de définir l'e-mail et son mot de passe). Mais tout ce que je besoin est d'analyser mon xml de sortie et de prendre une décision selon le résultat de sortie(redirection vers ma maison activiy ou de l'échec, etc). Voici mon code, Merci de donner vos suggestions si méthode plus appropriée 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);
}
}
}
OriginalL'auteur barisatbas | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Je voudrais obtenir le Facebook SDK et d'utiliser leurs fonctions
En un mot:
Puis sur créer ou où:
Vous pouvez le voir, cette ici: http://developers.facebook.com/docs/guides/mobile/#android
SessionStore.restore(facebook,this)
avant de vous facebook.autoriser(si c'est vrai, l'utilisateur est déjà connecté, si la valeur est false autoriser les incitera pour la connexion)Merci, c'est une bonne méthode, mais Mon serveur gère facebook autorisations. Après facebook login, mon serveur retourne un identifiant de session, et j'ai utilisé ce code et id de l'appareil en les combinant pour la sécurité et d'autres choses importantes.
OriginalL'auteur IamAlexAlright
En fait, j'ai un problème similaire dans l'intégration de l'facebook inscription avec le mien (mais je ne suis pas le développeur android).
J'ai posé la question ici Facebook enregistrement de flux à partir d'Android
mais je ne savais pas à propos de la webview. Ça me semble être une bonne solution, puis-je vous contacter, par chat ou par d'autres moyens?
EDIT:
Facebook viens de mettre à jour leur procédure de connexion:
https://developers.facebook.com/docs/offline-access-deprecation/
comme vous pouvez le voir, maintenant le jeton que vous obtenez à partir de l'authentification unique (ou tout autre client de jeton) est liée uniquement à votre demande (il s'agit d'une validation token-id de l'application-le secret de l'app).
Le point de terminaison est maintenant
Donc, en utilisant le facebook sdk pour android les étapes sont les suivantes:
1) obtenir de l'utilisateur connecté
2) envoyer le jeton pour le serveur
3) serveur de valider le jeton à l'encontre de son app id et le secret de l'app
4) ajouter vos propres fonctionnalités de sécurité
OriginalL'auteur Rohi