![](/img/trans.png)
[英]How to get values from a facebook login button and pass it to another activity
[英]Save and pass Facebook login GraphRequest to another Activity
我遵循了Facebook开发者教程来登录应用程序。
我已经使用了这段代码,并且效果很好:
public class MainActivity extends AppCompatActivity {
LoginButton loginButton;
TextView textView;
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
loginButton=(LoginButton)findViewById(R.id.fb_login_bn);
textView=(TextView)findViewById(R.id.textView);
loginButton.setReadPermissions(Arrays.asList(
"public_profile", "email", "user_birthday", "user_friends"));
callbackManager=CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// Facebook Email address
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
Log.v("LoginActivity Response ", response.toString());
try {
String Name = object.getString("name");
String FEmail = object.getString("email");
Log.v("Email = ", " " + FEmail);
Intent i = new Intent(MainActivity.this, Vote.class);
startActivity(i);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
textView.setText("Login cancelled");
}
@Override
public void onError(FacebookException error) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode,resultCode,data);
}
但是,如何保存用户登录会话,以使用户不会第二次登录?
以及如何将用户名和电子邮件传递给其他活动?
我如何将用户名和电子邮件传递给其他活动
使用intent.putExtra()
在您的MainActivity
传递数据
String Name = object.getString("name");
String FEmail = object.getString("email");
Log.v("Email = ", " " + FEmail);
Intent i = new Intent(MainActivity.this, Vote.class);
i.putExtra("name", Name);
i.putExtra("email", FEmail);
startActivity(i);
在您的Vote
类中,使用以下方法获得价值:
String name = getIntent().getStringExtra("name");
String email = getIntent().getStringExtra("email");
我如何保存用户登录会话,以便用户不会第二次登录
使用SharedPreferences
检查用户是否已经登录
成功登录后,将值保存到sharedpreferences
:
public static final String MyPREFERENCES = "MyPrefs";
SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean("logged_in", true); //save value
editor.commit();
您可以从sharedpreference
获取值,并检查用户是否已经登录并执行所需的操作。
if (prefs.getBoolean("logged_in", false)) {
//user logged in before
} else {
//not logged in
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.