0

我正在研究 Monodroid。我添加了一个 Dropnet DLL(我在 Monodevelop 中编译了它)。

我正在尝试检索帐户信息,以下是我的代码

DropNetClient _client;
string dropbox_appkey = "XXX";
string dropbox_appsecret = "XXXX";
_client = new DropNetClient(dropbox_appkey, dropbox_appsecret);
_client.UserLogin = new DropNet.Models.UserLogin { Token = "XXX", Secret = "XXXX" };
var accountInfo = _client.AccountInfo();

执行以下代码时出现错误

return (HttpWebResponse)request.GetResponse();

收到的错误是:

System.Net.WebException:获取响应流时出错(写入:身份验证或解密失败。):SendFailure ---> System.IO.IOException:身份验证或解密失败。---> Mono.Security.Protocol.Tls.TlsException:从服务器收到的证书无效。错误代码:Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates 处的 0xffffffff800b010a(Mono.Security.X509.X509CertificateCollection 证书)[0x00000] 在 Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate 处:0 .ProcessAsTls1 () [0x00000] 在:0 在 Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] 在:0 在 Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol .Tls.TlsStream handMsg) [0x00000] in :0 在 Mono。

当我在浏览器中运行 URL 时,如下所示:

https://api.dropbox.com/1/account/info?oauth_consumer_key=XXXX&oauth_nonce=3064850&oauth_signature_method=PLAINTEXT&oauth_timestamp=1347899148&oauth_token=XXXX&oauth_version=1.0&oauth_signature=XXX%26XXX

我得到这样的正确回应:

{“referral_link”:“https://www.dropbox.com/referrals/XXXX”,“display_name”:“XXX XXX”,“uid”:XXXX,“国家”:“IN”,“quota_info”:{“共享”:XXX,“配额”:XXXX,“正常”:XXXX},“电子邮件”:“XXXX@gmail.com”}

我的问题是为什么我在使用 Monodroid Emulator 时会出现奇怪的错误(我使用的是 Monodevelop版本 3.0.4.6并且我正在API_10 EMulator上进行测试。

我应该怎么办?

笔记:

只需添加,使用通过在桌面应用程序中对其进行身份验证获得的保管箱的身份验证令牌。我认为我们可以将使用我们的桌面应用程序的用户的令牌重用于移动应用程序。正确的?

4

1 回答 1

1

我在使用带有 Mono for Android 的 RestSharp 时遇到了类似的问题。原因是开发环境的证书无效。我为该域使用了一个静态 IP 地址 (192.168.1.122),以便我的手机可以连接到我的开发机器上的 Web 服务。您可以通过在发出 Web 请求之前在某处添加以下行来覆盖它:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
于 2012-11-28T17:11:40.423 回答