繁体   English   中英

保存并将Facebook登录GraphRequest传递给另一个活动

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM