Android Facebook SDK:SSL握手失败

时间:2014-12-02 11:41:38

标签: android facebook ssl

我对Android上的Facebook SDK有疑问,似乎是一个SSL问题,我得到的回应是:

{Response:  responseCode: unknown, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x4002f768: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x5ba74d74:0x00000000)}, isFromCache:false}

这是我的代码:

authButton = (LoginButton) gView.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setUserInfoChangedCallback(mLoginBtnCallBack);

这里是mLoginBtnCallBack:

LoginButton.UserInfoChangedCallback mLoginBtnCallBack = new LoginButton.UserInfoChangedCallback() {
    @Override
    public void onUserInfoFetched(GraphUser user) {
        final Session session = Session.getActiveSession();
        Log.d("Sennin32", "mLoginBtnCallBack session"+session.toString());
        if(user == null){
            Log.d("Sennin32", "mLoginBtnCallBack GraphUser Null!");
            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    Log.d("Sennin32", "mLoginBtnCallBack onSessionStateChange"+response.toString());
                    if (session == Session.getActiveSession()) {
                        if (user != null) {
                            GlFacebook.getInstance().SetFbId(user.getId());
                        } else {
                            Log.d("Sennin32", "mLoginBtnCallBack GraphUser Null again!");
                        }
                    }
                }
            });
            Request.executeBatchAsync(request);
        } else {
            GlFacebook.getInstance().SetFbId(user.getId());
        }
    }
};

有人得到同样的错误吗?它有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

我发现导致此错误的原因。 它是HttpResponseCache的原因,如果我禁用缓存,问题就解决了。

但我仍然想知道如何在没有错误的情况下启用缓存。 我尝试使用HttpsURLConnection.setDefaultSSLSocketFactory和SSLContext设置我的https连接。 但它不起作用,我再次查看Facebook lib,发现连接是http,但url是https,我现在不知道它并继续查明发生了什么。

现在,我只是简单地禁用缓存并且它可以工作。