Facebook登录失败,安装Facebook应用程序 [英] Facebook login fails with facebook app installed

查看:426
本文介绍了Facebook登录失败,安装Facebook应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的Andr​​oid的发展。我下载的Facebook SDK 3.0.1,并使用示例code登录。但问题是,如果安装Facebook应用程序的认证失败。
(否则它工作得很好)
$ P $在按钮pssing日志后,我得到的状态CLOSED_LOGIN_FAILED到的onActivityResult。
我当然不输入密码,它是通过Facebook的应用程序自动完成,而Facebook的应用程序是登录并正常工作。
我无法找到一个解决办法..
请大家帮我:)

这是我的code:

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
    例如=这一点;
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    buttonLoginToFacebook =(按钮)findViewById(R.id.buttonLoginToFacebook);
    tvWellcome =(的TextView)findViewById(R.id.tvWellcome);    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);    会话的会话= Session.getActiveSession();
    如果(会话== NULL){
        如果(savedInstanceState!= NULL){
            会话= Session.restoreSession(这一点,空,statusCallback,
                    savedInstanceState);
        }
        如果(会话== NULL){
            会话=新的Session(本);
        }
        Session.setActiveSession(会话);
        如果(session.getState()。等于(SessionState.CREATED_TOKEN_LOADED)){
            session.openForRead(新Session.OpenRequest(本)
                    .setCallback(statusCallback));
        }
    }    更新视图();
}@覆盖
公共无效调用onStart(){
    super.onStart();
    。Session.getActiveSession()的addCallback(statusCallback);
}@覆盖
公共无效的onStop(){
    super.onStop();
    。Session.getActiveSession()removeCallback(statusCallback);
}@覆盖
公共无效的onActivityResult(INT申请code,INT结果code,意图数据){
    super.onActivityResult(要求code,结果code,数据);
    Session.getActiveSession()的onActivityResult(这一点,要求code,
            结果code,数据);
    更新视图();
}@覆盖
保护无效的onSaveInstanceState(捆绑outState){
    super.onSaveInstanceState(outState);
    会话的会话= Session.getActiveSession();
    Session.saveSession(会话,outState);
}私人无效的UpdateView(){
    会话的会话= Session.getActiveSession();
    如果(session.isOpened()){
        意向意图=新意图(这一点,ScreenStartPage.class);
        startActivity(意向);
    }其他{
        buttonLoginToFacebook.setOnClickListener(新OnClickListener(){
            公共无效的onClick(查看视图){
                onClickLogin();
            }
        });
    }
}私人无效onClickLogin(){
    会话的会话= Session.getActiveSession();
    如果(session.isOpened()及!&放大器;!session.isClosed()){
        session.openForRead(新Session.OpenRequest(本)
                .setCallback(statusCallback));
        更新视图();
    }其他{
        Session.openActiveSession(这一点,真的,statusCallback);
    }
}
公共无效onClickLogout(){
    会话的会话= Session.getActiveSession();
    如果(!session.isClosed()){
        session.closeAndClearTokenInformation();
    }
}私有类SessionStatusCallback实现Session.StatusCallback {
    @覆盖
    公共无效呼叫(会话的会话,SessionState会的状态,
            例外的例外){
        更新视图();
    }
}


解决方案

你有没有设置在Facebook上的应用程序设置dashbaord调试密钥散列和完整的类名称?见步骤5和6的入门的Facebook SDK为Android 文档。

I'm new to android development. 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. (otherwise it works just fine) after pressing the log in button I get to onActivityResult with status CLOSED_LOGIN_FAILED. 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. 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? see steps 5 and 6 in the Getting Started with the Facebook SDK for Android doc.

这篇关于Facebook登录失败,安装Facebook应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆