Так я получаю информацию, хранящуюся в общих настройках, а затем сравниваю, существуют ли имя пользователя и пароль.Если пользователь вошел в систему, я могу показать другую активность.
SharedPreferences settings = getSharedPreferences ("logindetails", 0);
String username = settings.getString("username", "");
String password = settings.getString("password", "");
Но сейчас я пытаюсь получить имя пользователя и пол пользователя и отобразить его в своей активности.
Я пытаюсь это решить, но пока не нашел убедительного результата.
Может ли кто-нибудь помочь мне справиться с моим требованием?
Примечание: я также вижу документы на странице разработчика Facebook
Это код, который яЯ использую для получения пользовательских данных и отображения в другой деятельности.Проблема, с которой я столкнулся, заключается в том, что макет загружается до того, как ответ от Facebook будет прерван.Я подозреваю, что это из-за использования mAsyncRunner, поскольку он берет управление на себя.Я пытаюсь выяснить, как его проанализировать до загрузки макета.
public class FaceBookRetrieval extends Activity{
this.facebookConnector = new FacebookConnect(APP_ID, this,
getApplicationContext(), PERMS);
}
public class FacebookConnect {
public FacebookConnect fb = null;
private Facebook facebook = null;
private Context context;
private String[] permissions;
public static final String TAG = "FACEBOOK";
private AsyncFacebookRunner mAsyncRunner;
private SharedPreferences sharedPrefs;
private ProgressBar pb;
public String fbName, fbGender;
private Activity activity;
public String check = "false";
private SessionListener mSessionListener = new SessionListener();;
public FacebookConnect(String appId, Activity activity, Context context,
String[] permissions) {
this.facebook = new Facebook(appId);
mAsyncRunner = new AsyncFacebookRunner(facebook);
SessionStore.restore(facebook, context);
SessionEvents.addAuthListener(mSessionListener);
SessionEvents.addLogoutListener(mSessionListener);
this.context = context;
this.permissions = permissions;
this.activity = activity;
}
public void login() {
if (!facebook.isSessionValid()) {
facebook.authorize(this.activity, this.permissions,
new LoginDialogListener());
}
}
public void getID() {
login();
return;
}
public boolean isSession() {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
String access_token = sharedPrefs.getString("access_token", "x");
Long expires = sharedPrefs.getLong("access_expires", -1);
Log.d(TAG, access_token);
facebook.setAccessToken(null);
facebook.setAccessExpires(-1);
if (access_token != null && expires != -1) {
// facebook.setAccessToken(access_token);
// facebook.setAccessExpires(expires);
}
return facebook.isSessionValid();
}
// request the facebook to provide the response and then parse the response to
// obtain username and gender
private class IDRequestListener implements RequestListener {
@Override
public void onComplete(String response, Object state) {
try {
Log.d(TAG, "Response: " + response.toString());
JSONObject json = Util.parseJson(response);
fbGender = json.getString("gender");
fbName = json.getString("name");
check = "true";
} catch (JSONException e) {
Log.d(TAG, "JSONException: " + e.getMessage());
} catch (FacebookError e) {
Log.d(TAG, "FacebookError: " + e.getMessage());
}
Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
FacebookConnect.this.runOnUiThread(new Runnable() {
public void run() {
pb.setVisibility(ProgressBar.VISIBLE);
}
});
return ;
}
@Override
public void onIOException(IOException e, Object state) {
Log.d(TAG, "IOException: " + e.getMessage());
}
@Override
public void onFacebookError(FacebookError e, Object state) {
Log.d(TAG, "FacebookError: " + e.getMessage());
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
facebook.authorizeCallback(requestCode, resultCode, data);
}
public void runOnUiThread(Runnable runnable) {
}
private class LoginDialogListener implements DialogListener {
@Override
public void onComplete(Bundle values) {
String token = facebook.getAccessToken();
long token_expires = facebook.getAccessExpires();
Log.d(TAG, "AccessToken: " + token);
Log.d(TAG, "AccessExpires: " + token_expires);
sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(context);
sharedPrefs.edit().putLong("access_expires", token_expires).clear()
.commit();
sharedPrefs.edit().putString("access_token", token).clear().commit();
mAsyncRunner.request("me", new IDRequestListener());
Toast.makeText(context, "You are logged in", Toast.LENGTH_SHORT).show();
return;
}
@Override
public void onCancel() {
Log.d(TAG, "OnCancel");
}
@Override
public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}
@Override
public void onError(DialogError e) {
// TODO Auto-generated method stub
}
}
private class SessionListener implements AuthListener, LogoutListener {
public void onAuthSucceed() {
SessionStore.save(facebook, context);
}
public void onAuthFail(String error) {
}
public void onLogoutBegin() {
}
public void onLogoutFinish() {
SessionStore.clear(context);
}
}
public Facebook getFacebook() {
return this.facebook;
}
}
Кто-нибудь может мне помочь?