首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓和脸书:在buttonClick之后如何登录脸书?

安卓和脸书:在buttonClick之后如何登录脸书?
EN

Stack Overflow用户
提问于 2016-04-04 19:29:25
回答 1查看 75关注 0票数 2

当我启动Login2Activity时,它将打开屏幕,一秒钟后,它将直接打开一个facebook登录弹出窗口。我希望脸书登录弹出窗口将在点击LoginButton后打开。我该如何解决这个问题呢?

代码语言:javascript
复制
    public class Login2Activity extends AppCompatActivity {

            private LoginButton loginButton;
            private CallbackManager callbackManager;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                callbackManager = CallbackManager.Factory.create();
                setContentView(R.layout.activity_login2);
                TextView mTitle = (TextView)findViewById(R.id.textView3);
                mTitle.setTypeface(Typeface.createFromAsset(getApplication().getAssets(), "fonts/HELVETICANEUELTSTD-TH.ttf"));


                loginButton = (LoginButton)findViewById(R.id.login_btn);
                LoginManager.getInstance().logInWithReadPermissions(
                        this,
                        Arrays.asList("user_friends"));

                loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        Log.d("tagger", "FB onSucces");
                        GraphRequest request = GraphRequest.newMeRequest(
                                loginResult.getAccessToken(),
                                new GraphRequest.GraphJSONObjectCallback() {
                                    @Override
                                    public void onCompleted(JSONObject object, GraphResponse response) {
                                        Intent x = new Intent(Login2Activity.this, AddActivity.class);
                                        startActivity(x);
                                    }
                                });

                        Bundle parameters = new Bundle();
                        parameters.putString("fields", "id,first_name,last_name,email,gender,birthday,picture,friends");
                        request.setParameters(parameters);
                        request.executeAsync();
                    }

                    @Override
                    public void onCancel() {
                        Log.d("tagger", "FB onCancel");
                        Toast.makeText(Login2Activity.this, "Facebook login Cancel", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onError(FacebookException e) {
                        Log.d("tagger", "FB onError");
                        Toast.makeText(Login2Activity.this, "There is a facebook error", Toast.LENGTH_SHORT).show();
                    }
                });
            }
            @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent        data) 
        {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        }

}
EN

回答 1

Stack Overflow用户

发布于 2016-04-04 23:50:43

如果不初始化facebook sdk,我不知道您的代码是如何工作的。这是我正在实现的代码,这是实现facebook登录只在按钮点击。Facebooksdk应该在setContView之前初始化。我相信你的代码可能因为指令的顺序而不能正常工作。

代码语言:javascript
复制
    //inside on create
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    setContentView(R.layout.activity_login);

    LoginButton loginButton = (LoginButton) findViewById(R.id.alogin_btn_facebook);
    loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
    callbackManager = CallbackManager.Factory.create();

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
       ...rest of the success/error/cancel code
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36401393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档