Holen Sie sich facebook-E-Mail nach dem login in Android
Hier ist mein code der Verwirklichung der Verbindung.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.Util;
public class FacebookConnect extends Activity{
public static final String TAG = "FACEBOOK";
private Facebook mFacebook;
public static final String APP_ID = "XXX";
private AsyncFacebookRunner mAsyncRunner;
private static final String[] PERMS = new String[] { "read_stream" };
private SharedPreferences sharedPrefs;
private Context mContext;
private TextView username;
private ProgressBar pb;
String fbId, fbName, fbEmail;
public void setConnection() {
mContext = this;
mFacebook = new Facebook(APP_ID);
mAsyncRunner = new AsyncFacebookRunner(mFacebook);
}
public void getID(TextView txtUserName, ProgressBar progbar) {
username = txtUserName;
pb = progbar;
if (isSession()) {
Log.d(TAG, "sessionValid");
mAsyncRunner.request("me", new IDRequestListener());
} else {
//no logged in, so relogin
Log.d(TAG, "sessionNOTValid, relogin");
mFacebook.authorize(this, PERMS, new LoginDialogListener());
}
}
public boolean isSession() {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
String access_token = sharedPrefs.getString("access_token", "x");
Long expires = sharedPrefs.getLong("access_expires", -1);
Log.d(TAG, access_token);
if (access_token != null && expires != -1) {
mFacebook.setAccessToken(access_token);
mFacebook.setAccessExpires(expires);
}
return mFacebook.isSessionValid();
}
private class LoginDialogListener implements DialogListener {
@Override
public void onComplete(Bundle values) {
Log.d(TAG, "LoginONComplete");
String token = mFacebook.getAccessToken();
long token_expires = mFacebook.getAccessExpires();
Log.d(TAG, "AccessToken: " + token);
Log.d(TAG, "AccessExpires: " + token_expires);
sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
sharedPrefs.edit().putLong("access_expires", token_expires).commit();
sharedPrefs.edit().putString("access_token", token).commit();
mAsyncRunner.request("me", new IDRequestListener());
}
@Override
public void onFacebookError(FacebookError e) {
Log.d(TAG, "FacebookError: " + e.getMessage());
}
@Override
public void onError(DialogError e) {
Log.d(TAG, "Error: " + e.getMessage());
}
@Override
public void onCancel() {
Log.d(TAG, "OnCancel");
}
}
private class IDRequestListener implements RequestListener {
@Override
public void onComplete(String response, Object state) {
try {
Log.d(TAG, "IDRequestONComplete");
Log.d(TAG, "Response: " + response.toString());
JSONObject json = Util.parseJson(response);
fbId = json.getString("id");
fbName = json.getString("name");
//fbEmail = json.getString("email");
FacebookConnect.this.runOnUiThread(new Runnable() {
public void run() {
username.setText("Welcome: " + name + "\n ID: " + fbId);
pb.setVisibility(ProgressBar.GONE);
}
});
} catch (JSONException e) {
Log.d(TAG, "JSONException: " + e.getMessage());
} catch (FacebookError e) {
Log.d(TAG, "FacebookError: " + e.getMessage());
}
}
@Override
public void onIOException(IOException e, Object state) {
Log.d(TAG, "IOException: " + e.getMessage());
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
Log.d(TAG, "FileNotFoundException: " + e.getMessage());
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
Log.d(TAG, "MalformedURLException: " + e.getMessage());
}
@Override
public void onFacebookError(FacebookError e, Object state) {
Log.d(TAG, "FacebookError: " + e.getMessage());
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
}
Als Antwort bekomme ich einen JSON. Beispiel:
08-15 14:22:42.160: DEBUG/FACEBOOK(1258): Response: {"id":"3159628280","name":"Peter Black","first_name":"Peter","last_name":"Black","link":"http:\/\/www.facebook.com\/Peter.Black","username":"Peter.Black","gender":"male","timezone":3,"locale":"bg_BG","verified":true,"updated_time":"2011-08-14T08:42:59+0000"}
Meine Frage ist, wie bekomme ich die Benutzer-E-Mail (die E-Mail, mit der er sich anmeldet Facebook)?
dude u got E-Mail-Adresse der facebook-Nutzer bin ich versucht, aber nicht immer die Liste der E-Mail-Adressen.
Nicht sicher, wenn ich dir Recht, aber hier unten (die Antwort) ist, wie ich die E-Mail-Adresse.
dude ich sage u ich Holen wollen E-Mail-Adressen aller Facebook-Nutzer
Sie können nicht erhalten, die alle E-Mails in einem Zyklus mit der Methode unten dargestellt.
Nicht sicher, wenn ich dir Recht, aber hier unten (die Antwort) ist, wie ich die E-Mail-Adresse.
dude ich sage u ich Holen wollen E-Mail-Adressen aller Facebook-Nutzer
Sie können nicht erhalten, die alle E-Mails in einem Zyklus mit der Methode unten dargestellt.
InformationsquelleAutor Stefan Doychev | 2011-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
email
die Berechtigung zum Lesen der Benutzer-E-Mail-Adresse.Hinzufügen eines E-Mail-tag in Ihrer json-Antwort von
[uid]
oderme
Anfragen.E-Mail
Quelle: Berechtigungen
private static final String[] PERMS = new String[] { "read_stream", "email" };
dude mir helfen, facebook-Benutzer E-Mail-Adressen
funktioniert der obige code ruft die Benutzer-Daten(E-Mail, Vorname, Nachname etc..), falls er eingeloggt ist auf facebook ??
wie kann u get das Profilbild des users?? ist es möglich die url??
danke stefan-doychev...
InformationsquelleAutor
Tun, wenn Sie die Login-Schaltfläche:
InformationsquelleAutor Yuuki Nguyễn
Andere Möglichkeit zum abrufen von E-Mails im Facebook SDK 3.0.x ist durch die Nutzung dieser open-source-Bibliothek:
android-simple-facebook
https://github.com/sromku/android-simple-facebook
Ersten, die mit dieser Erlaubnis
Dann, login
Und dann Holen Sie das Profil
Voller Beispiele sind hier erklaert einschließlich Berechtigungen und andere Sachen vereinfachte Methoden (wie: veröffentlichen Sie feeds, erhalten Freunde und mehr...)
InformationsquelleAutor sromku
Vor dem Aufruf von Session.openActiveSession tun dies, um Berechtigungen hinzuzufügen:
Den letzten parameter in
Session.openActiveSession()
sollten Berechtigungen. Jetzt können Sie aufuser.getProperty("email").toString()
.InformationsquelleAutor Ramkailash