腾讯微博oauth认证

xinlan1022 2011-11-08 11:15:41
请求request_token出现如下异常,求解

11-08 15:08:43.516: W/System.err(2770): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: Not trusted server certificate
11-08 15:08:43.525: W/System.err(2770): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:215)
11-08 15:08:43.525: W/System.err(2770): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
11-08 15:08:43.525: W/System.err(2770): at com.mypack.oauth.OAuthAsyncTask.doInBackground(OAuthAsyncTask.java:27)
11-08 15:08:43.525: W/System.err(2770): at com.mypack.oauth.OAuthAsyncTask.doInBackground(OAuthAsyncTask.java:1)
11-08 15:08:43.536: W/System.err(2770): at android.os.AsyncTask$2.call(AsyncTask.java:185)
11-08 15:08:43.546: W/System.err(2770): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-08 15:08:43.546: W/System.err(2770): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-08 15:08:43.556: W/System.err(2770): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
11-08 15:08:43.556: W/System.err(2770): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
11-08 15:08:43.566: W/System.err(2770): at java.lang.Thread.run(Thread.java:1096)
11-08 15:08:43.566: W/System.err(2770): Caused by: javax.net.ssl.SSLException: Not trusted server certificate
11-08 15:08:43.566: W/System.err(2770): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371)
11-08 15:08:43.566: W/System.err(2770): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
11-08 15:08:43.576: W/System.err(2770): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
11-08 15:08:43.586: W/System.err(2770): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
11-08 15:08:43.595: W/System.err(2770): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
11-08 15:08:43.606: W/System.err(2770): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
11-08 15:08:43.616: W/System.err(2770): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
11-08 15:08:43.616: W/System.err(2770): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-08 15:08:43.616: W/System.err(2770): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-08 15:08:43.637: W/System.err(2770): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-08 15:08:43.637: W/System.err(2770): at oauth.signpost.commonshttp.CommonsHttpOAuthProvider.sendRequest(CommonsHttpOAuthProvider.java:92)
11-08 15:08:43.686: W/System.err(2770): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:178)
11-08 15:08:43.686: W/System.err(2770): ... 9 more
11-08 15:08:43.686: W/System.err(2770): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Could not validate certificate signature.
11-08 15:08:43.696: W/System.err(2770): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:168)
11-08 15:08:43.706: W/System.err(2770): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:366)
11-08 15:08:43.706: W/System.err(2770): ... 20 more
11-08 15:08:43.706: W/System.err(2770): Caused by: java.security.cert.CertPathValidatorException: Could not validate certificate signature.
11-08 15:08:43.726: W/System.err(2770): at org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:342)
11-08 15:08:43.726: W/System.err(2770): at java.security.cert.CertPathValidator.validate(CertPathValidator.java:202)
11-08 15:08:43.726: W/System.err(2770): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:164)
11-08 15:08:43.726: W/System.err(2770): ... 21 more
11-08 15:08:43.737: W/System.err(2770): Caused by: java.security.SignatureException: Signature was not verified.
11-08 15:08:43.756: W/System.err(2770): at org.apache.harmony.security.provider.cert.X509CertImpl.fastVerify(X509CertImpl.java:601)
11-08 15:08:43.756: W/System.err(2770): at org.apache.harmony.security.provider.cert.X509CertImpl.verify(X509CertImpl.java:544)
11-08 15:08:43.766: W/System.err(2770): at org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:337)
11-08 15:08:43.766: W/System.err(2770): ... 23 more

...全文
1656 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyJixiang 2012-07-24
  • 打赏
  • 举报
回复
四大微博那个里面说的模糊的呀!http://06peng.com/read.php?60
1.这是因为Https认证被截获导致,Client认为安全失效,很久之前就出现了这个问题了,那时候在WebView上加上
下面的代码就可以解决了 WebView在哪,在哪加代码?
2.调用方法,只要用认证返回的HttpCilent即可。代码:
public HttpClient getNewHttpClient() { 这个方法又加在谁里面呀!
heyiwen1987 2012-04-13
  • 打赏
  • 举报
回复
这个好用哦~方便的话将下原理哈~
[Quote=引用 7 楼 的回复:]
(1)添加类
public class _FakeX509TrustManager implements X509TrustManager {

private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new
X509Certificate……
[/Quote]
a554187160 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mrlixirong 的回复:]
(1)添加类
public class _FakeX509TrustManager implements X509TrustManager {

private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new
X509Certificate……
[/Quote]


谢谢哦,用了下可以的
06peng 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xinlan1022 的回复:]

http://06peng.com/blog/read.php?60
问题已经解决
[/Quote]

地址写错了,应该是http://06peng.com/read.php?60
06peng 2011-11-21
  • 打赏
  • 举报
回复
直接代替腾讯的httpclient就可以用了。或者你改成腾讯的。

[Quote=引用 12 楼 wangbeyond6 的回复:]

引用 11 楼 xinlan1022 的回复:

http://06peng.com/blog/read.php?60
问题已经解决


这个网站的HttpClient 跟 腾讯API 的 HttpClient 不是一个包 ? 怎么弄呢
[/Quote]
sdakjgasdjk 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xinlan1022 的回复:]

http://06peng.com/blog/read.php?60
问题已经解决
[/Quote]

这个网站的HttpClient 跟 腾讯API 的 HttpClient 不是一个包 ? 怎么弄呢
李工喜荣 2011-11-10
  • 打赏
  • 举报
回复
(1)添加类
public class _FakeX509TrustManager implements X509TrustManager {

private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new
X509Certificate[] {};

@Override
public void checkClientTrusted(X509Certificate[] chain, String
authType) throws CertificateException {
}

@Override
public void checkServerTrusted(X509Certificate[] chain, String
authType) throws CertificateException {
}

public boolean isClientTrusted(X509Certificate[] chain) {
return true;
}

public boolean isServerTrusted(X509Certificate[] chain) {
return true;
}

@Override
public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}

public static void allowAllSSL() {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){

@Override
public boolean verify(String arg0, SSLSession arg1) {
// TODO Auto-generated method stub
return true;
}

});

SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[] { new _FakeX509TrustManager() };
}

try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}

HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
}

}


(2)在你要联网的地方调用,示例如下

_FakeX509TrustManager.allowAllSSL();
HttpURLConnection con =null;
URL postUrl = new URL("https://open.t.qq.com/cgi-bin/request_token?"+params);
con = (HttpURLConnection) postUrl.openConnection();
con.setRequestMethod("GET");


本人授权使用HttpURLConnetion方法,如上面代码所述,在联网前调用_FakeX509TrustManager.allowAllSSL()函数,便可正常联网了,直接无视 SSL证书 是否有效。

xinlan1022 2011-11-10
  • 打赏
  • 举报
回复
xinlan1022 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mrlixirong 的回复:]

(1)添加类
public class _FakeX509TrustManager implements X509TrustManager {

private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new
X509Certificat……
[/Quote]
晚上回去试试哦
xinlan1022 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shuikejian 的回复:]

问题终于解决了!谢谢!
[/Quote]

我用了上面的那个类没有用哦,我用的httpclient发送的请求,有用吗?
shuikejian 2011-11-10
  • 打赏
  • 举报
回复
问题终于解决了!谢谢!
lvzhenzhang 2011-11-09
  • 打赏
  • 举报
回复
哥也和你出现一样的问题,现在解决了吗?
xinlan1022 2011-11-09
  • 打赏
  • 举报
回复
自己顶
roadlord 2011-11-09
  • 打赏
  • 举报
回复
是啊,的确是黄色论坛啊
Yeah517716172 2011-11-09
  • 打赏
  • 举报
回复
这个是腾讯的问题
-droidcoffee- 2011-11-09
  • 打赏
  • 举报
回复
Communication with the service provider failed: Not trusted server certificate

certificate 有问题吧?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧