简体   繁体   English

安装了Facebook应用程序后,Facebook登录失败

[英]Facebook login fails with facebook app installed

I'm new to android development. 我是android开发的新手。 I've downloaded facebook sdk 3.0.1, and using the sample code to log in. The problem is, that if facebook app is installed the authentication fails. 我已经下载了facebook sdk 3.0.1,并使用示例代码登录。问题是,如果安装了facebook应用程序,则身份验证将失败。 (otherwise it works just fine) after pressing the log in button I get to onActivityResult with status CLOSED_LOGIN_FAILED. (否则效果很好)在按下登录按钮后,我进入状态为CLOSED_LOGIN_FAILED的onActivityResult。 of course I'm not typing the password, it's done automatically through facebook's app, and the facebook app is logged in and works properly. 当然,我没有输入密码,它是通过facebook的应用程序自动完成的,facebook应用程序已登录并且可以正常工作。 I couldn't find a solution.. please help me :) 我找不到解决方案..请帮助我:)

this is my code: 这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    instance = this;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buttonLoginToFacebook = (Button) findViewById(R.id.buttonLoginToFacebook);
    tvWellcome = (TextView) findViewById(R.id.tvWellcome);

    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        if (savedInstanceState != null) {
            session = Session.restoreSession(this, null, statusCallback,
                    savedInstanceState);
        }
        if (session == null) {
            session = new Session(this);
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this)
                    .setCallback(statusCallback));
        }
    }

    updateView();
}

@Override
public void onStart() {
    super.onStart();
    Session.getActiveSession().addCallback(statusCallback);
}

@Override
public void onStop() {
    super.onStop();
    Session.getActiveSession().removeCallback(statusCallback);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
    updateView();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Session session = Session.getActiveSession();
    Session.saveSession(session, outState);
}

private void updateView() {
    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        Intent intent = new Intent(this, ScreenStartPage.class);
        startActivity(intent);
    } else {
        buttonLoginToFacebook.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                onClickLogin();
            }
        });
    }
}

private void onClickLogin() {
    Session session = Session.getActiveSession();
    if (!session.isOpened() && !session.isClosed()) {
        session.openForRead(new Session.OpenRequest(this)
                .setCallback(statusCallback));
        updateView();
    } else {
        Session.openActiveSession(this, true, statusCallback);
    }
}


public void onClickLogout() {
    Session session = Session.getActiveSession();
    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
    }
}

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        updateView();
    }
}

Have you setup your debug key hash and full class name on Facebook's app settings dashbaord? 您是否已在Facebook的应用程序设置dashbaord中设置了调试键哈希和全类名? see steps 5 and 6 in the Getting Started with the Facebook SDK for Android doc. 请参阅适用于Android的Facebook SDK入门文档中的步骤5和6。

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

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