Android Facebook SDK : SSL handshake failure

标签 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());
        }
    }
};

有人遇到同样的错误吗?有什么解决办法吗?

最佳答案

我已经找到导致此错误的原因。 这是由 HttpResponseCache 引起的,如果我禁用缓存,问题就解决了。

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

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

关于Android Facebook SDK : SSL handshake failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248552/

相关文章:

javascript - 在 facebook php sdk 4.0 和 laravel 中的 Javascript sdk 上访问 token

android - 行驶距离

java - 跳转返回null

android - 拥有 'release' apk 后,我应该删除 firebase 中的 SHA1 调试 key 吗?

Facebook Graph API - 寻找用户的顶级 friend

javascript - 检查用户是否喜欢页面

java - 使用 java sslSocket 与 Google 通信时未收到响应

java - Poodle 和 Websphere ESB/Process Server 尝试调用外部 TLS 服务

android - 无法在 Android 中将 SharedPreferences 值从一个 Activity 获取到另一个 Activity

ssl - ACE SSL 错误 : peer did not return a certificate