繁体   English   中英

Android自定义Facebook登录按钮

[英]Android Custom Facebook Log In Button

我创建了自定义按钮,该按钮在模拟器中可以正常工作。 但是,它在设备上不起作用:第一次登录,但第二次尝试执行任何操作。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    callbackManager = CallbackManager.Factory.create();
    Button testButton = (Button) findViewById(R.id.test);
    testButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            com.facebook.login.widget.LoginButton btn = new LoginButton(MainActivity.this);
            btn.setReadPermissions(Arrays.asList(
                    "public_profile", "email", "user_birthday", "user_friends"));

            if (Profile.getCurrentProfile().getCurrentProfile() != null) {
                LoginManager.getInstance().logOut();
                Button currentButton = (Button) findViewById(v.getId());
                currentButton.setText("LOG IN");
            } else {
                btn.performClick();
                Button currentButton = (Button) findViewById(v.getId());
                currentButton.setText("LOG OUT");
            }
        }
    });

    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {


                    GraphRequest.newMeRequest(
                            loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject json, GraphResponse response) {
                                    if (response.getError() != null) {
                                        // handle error
                                        Toast.makeText(MainActivity.this, "error", Toast.LENGTH_LONG).show();
                                    } else {

                                        try {

                                            user_name = json.getString("name");
                                            Toast.makeText(getApplicationContext(), user_name, Toast.LENGTH_LONG).show();
                                            System.out.println(user_name);
                                        } catch (JSONException e) {
                                            e.printStackTrace();
                                        }

                                        Intent intent = new Intent(MainActivity.this, SignActivity.class);
                                        intent.putExtra(EXTRA_MESSAGE, user_name);
                                        startActivity(intent);
                                    }
                                }

                            }).executeAsync();

                }

                @Override
                public void onCancel() {

                }

                @Override
                public void onError(FacebookException error) {

                }
            });

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);

}

该应用程序在Facebook配置页面上公开。 标准LoginButton可以正常工作,但是,我需要对其进行自定义,或者至少要更改按钮的形状和颜色。 任何想法如何做到这一点? 先感谢您。

Facebook SDK版本:4.5仿真器/设备API版本:分别为23/21

该错误是由新生成的密钥哈希值引起的。 通过向Facebook应用程序设置中添加新内容(来自堆栈跟踪)解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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