[英]Android Facebook SDK: SSL handshake failure
我有一個關於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 lib,發現連接是http,但是url是https,我現在不知道它了,不停地查找發生了什么。
現在,我只是簡單地禁用緩存即可使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.