3

这是可能的最基本的示例,它会引发异常。

// Pass your credentials to the service
TwitterService service = new TwitterService(API_KEY,API_SECRET);
service.UserAgent = "StackBot";

// Step 1 - Retrieve an OAuth Request Token
OAuthRequestToken request = service.GetRequestToken();

// Step 2 - Redirect to the OAuth Authorization URL
Uri uri = service.GetAuthorizationUri(request);
Console.WriteLine(uri.ToString());

// Step 3 - Exchange the Request Token for an Access Token
string verifier = "123456"; // <-- This is input into your application by your user
OAuthRequestToken requestToken = new OAuthRequestToken();
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);

这是一个例外:

未处理的异常:System.ArgumentNullException:参数不能为空。
参数名称:查询
  在 System.Compat.Web.HttpUtility.ParseQueryString(System.String 查询,System.Text.Encoding 编码)[0x00000] 中:0
  在 System.Compat.Web.HttpUtility.ParseQueryString(System.String 查询)[0x00000] 中:0
  在 TweetSharp.TwitterService.GetRequestToken (System.String 回调) [0x00000] in :0
  在 TweetSharp.TwitterService.GetRequestToken () [0x00000] in :0
  在 Main.cs:179 中的 Namespace.Class.Main (System.String[] args) [0x00049]

注意:我在 Ubuntu 10.10 64 位上使用 Mono 2.6。

4

2 回答 2

1

对于初学者,您正在创建一个新的“requestToken”变量,一个空的,具有空值,然后尝试使用它来获取访问令牌。您需要使用从对 GetRequestToken 的调用中实际收到的那个(您称为“请求”的那个)。

于 2010-12-22T14:24:35.587 回答
0

我遇到了同样的问题,我自己无法重现它,但它会在某些客户端的服务器端定期发生。堆栈跟踪和错误描述与您得到的类似:

InnerException:值不能为空。参数名称:在 System.Compat.Web.HttpUtility.ParseQueryString(String query) at TweetSharp.TwitterService.GetRequestToken(String callback) 处查询 System.Compat.Web.HttpUtility.ParseQueryString(String query, Encoding encoding)

我查看了 TweetSharp 代码,现在它可能有点过时了(v. 2.3)。如果问题在较新版本中得到解决,请告诉我。似乎错误发生在这里:

    var response = _oauth.Request(request);
    SetResponse(response);
    var query = HttpUtility.ParseQueryString(response.Content);

无论出于何种原因,对 twitter 服务器的请求似乎都失败了,但是没有检查 response.Content 是否为空。然后 ParseQueryString 抛出异常。

我的解决方案只是忽略此错误并允许用户重试。似乎网络错误、代理服务器或连接不稳定可能会导致此错误。

于 2014-09-18T16:07:01.037 回答