Android Webview Facebook Login
In meiner app, ich möchte die Benutzer in der Lage sein, sich mit Ihrem Facebook-Konto. Nach einigen Recherchen, bin ich in der Lage, herauszufinden, das, auch wenn ich nicht denke, dass dieser Weg die beste Methode. Habe ich eine webview in meiner UI, und ein webviewclient zu spüren url Vermittlungen. So wie ich das verstehe, Auf Android, muss ich behandeln alle Umleitungen in meinem webviewclient (Facebook Umleitungen, mehrere Umleitungen passieren, wenn der Benutzer festlegen, die seine/Ihre E-Mail und Passwort). Aber alles, was ich brauchen, ist zum Parsen meiner xml-Ausgabe und eine Entscheidung treffen, je nach Ausgang Ergebnis(redirect zu mir nach Hause activiy oder-Fehler, etc). Hier ist mein code, Bitte geben Sie Ihre Vorschläge, wenn mehr geeignete Methode existiert.
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);
}
}
}
InformationsquelleAutor barisatbas | 2011-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde die Facebook-SDK und deren Funktionen nutzen
In einer nussschale Sie dies tun:
Dann auf erstellen oder wo auch immer:
Können Sie sehen, dieses hier: http://developers.facebook.com/docs/guides/mobile/#android
SessionStore.restore(facebook,this)
bevor Sie facebook.autorisieren(wenn seine wahre, hat der Benutzer bereits eingeloggt, wenn falsche Autorisierung aufgefordert login)Danke, das ist eine gute Methode ist, aber Meine server verarbeitet facebook Berechtigungen. Nach facebook-login, mein server liefert eine session-id, und ich habe diese id und Geräte-id, die Sie für die Sicherheit und andere wichtige Dinge.
InformationsquelleAutor IamAlexAlright
Habe ich eigentlich ein ähnliches problem bei der Integration der facebook-Anmeldung mit meinen eigenen (aber ich bin nicht der android-Entwickler).
Habe die Frage hier Facebook Registrierung-flow von Android
aber ich wusste nicht, über die webview. Das scheint eine gute Lösung ist, kann ich mit Ihnen per chat oder andere Mittel?
BEARBEITEN:
Facebook aktualisiert Ihre login-Prozedur:
https://developers.facebook.com/docs/offline-access-deprecation/
wie Sie sehen können, ist jetzt das token erhalten Sie von SSO - (oder andere client-token) verbunden ist, die nur für Ihre Anwendung (es ist ein validation token-app id, app secret).
Der Endpunkt ist jetzt
Also mit der facebook-sdk für android die Schritte sind:
1) dem Benutzer unterzeichnet
2) senden Sie das token an die server
3) server überprüft, ob der token gegen die app-id und app secret
4) fügen Sie Ihre eigenen Sicherheits-features
InformationsquelleAutor Rohi