简体   繁体   English

Android facebook SDK身份验证不起作用

[英]Android facebook SDK authentification don't work

I am using latest android SDK. 我正在使用最新的android SDK。 Dialog is opened, but after enter credentials dialog is closing and status don't change. 对话框已打开,但输入凭据对话框关闭后,状态不会更改。

private StatusCallback statusCallback = new StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) // call just one time and state is "opening"
            authWithToken("facebook", session.getAccessToken());
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new View(this));

    //setVisible(false);

    Settings.addLoggingBehavior(LoggingBehavior.CACHE);
    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
    //Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_RAW_RESPONSES);
    //Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);

    Session session = Session.getActiveSession();

    if (session == null) {
        session = new Session.Builder(this).build();
        Session.setActiveSession(session);
    }

    if (!session.isOpened()) {
        Session.OpenRequest openRequest = new Session.OpenRequest(this);
        openRequest.setPermissions(permissions);
        openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
        openRequest.setCallback(statusCallback);
        session.openForPublish(openRequest); //here dialog is opened, user is able to enter credentials 
    }

    if (session != null && session.isOpened()) {
        if (!hasEmailPermission()) {
            NewPermissionsRequest request = new NewPermissionsRequest(this, permissions);
            request.setCallback(statusCallback);
            request.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);

            session.requestNewReadPermissions(request);
        }
    }

    if (session != null && session.isOpened())
        authWithToken("facebook", session.getAccessToken());
}

private boolean hasEmailPermission() {
    Session session = Session.getActiveSession();
    return session != null && session.getPermissions().containsAll(permissions);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    //never call this method 
    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

I am did everything by facebook oficial "getting started" documentation 我通过facebook官方的“入门”文档完成了所有工作

Android Facebook SDK3.0, session state OPENING Android Facebook SDK3.0,会话状态为OPENING

doesn't work, because Facebook authentification dialog never calls onActivityResult() 不起作用,因为Facebook身份验证对话框从不调用onActivityResult()

Facebook application is not installed. 未安装Facebook应用程序。

UPDATE: 更新:

I checked. 我检查了。 session.openForPublish(openRequest); closes my activity and open Facebook Dialog. 关闭我的活动并打开Facebook对话框。 But why? 但为什么?

Use UiLifeCycleHelper class to change the status of your session. 使用UiLifeCycleHelper类可以更改会话的状态。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);
        uiHelper = new UiLifecycleHelper(this, callback);
        uiHelper.onCreate(savedInstanceState);
}

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

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