Linked In API にアクセスするための小さなラッパーを作成しました。これに渡すパラメーターは次のとおりです。
[oauth_verifier, 88600]
[oauth_token, xxxx]
[oauth_version, 1.0]
[oauth_nonce, xxx]
[oauth_timestamp, xxxxx]
[oauth_signature_method, HMAC-SHA1]
[oauth_consumer_key, xxxxxx]
[oauth_consumer_secret, xxxxxx]
[oauth_signature, xxx+xxxxxxxxxxx]
私が取得している例外は次のとおりです。「リモート サーバーがエラーを返しました: (401) 権限がありません。」
Twitterで完全に機能するWebリクエストを介してアクセスしようとしています。次のコードをご覧ください。
public static OAuthTokenResponse GetAccessToken(string consumerKey, string consumerSecret, string requestToken, string verifier, string getAccessTokenUrl, string realM)
{
if (string.IsNullOrEmpty(consumerKey))
{
throw new ArgumentNullException("consumerKey");
}
if (string.IsNullOrEmpty(consumerSecret))
{
throw new ArgumentNullException("consumerSecret");
}
if (string.IsNullOrEmpty(requestToken))
{
throw new ArgumentNullException("requestToken");
}
WebRequestBuilder builder = new WebRequestBuilder(
new Uri(getAccessTokenUrl),
HTTPVerb.GET,
new OAuthTokens { ConsumerKey = consumerKey, ConsumerSecret = consumerSecret });
builder.Realm = realM;
if (!string.IsNullOrEmpty(verifier))
{
builder.Parameters.Add("oauth_verifier", verifier);
}
builder.Parameters.Add("oauth_token", requestToken);
string responseBody;
try
{
HttpWebResponse webResponse = builder.ExecuteRequest();
responseBody = new StreamReader(webResponse.GetResponseStream()).ReadToEnd();
}
catch (WebException wex)
{
throw new Exception(wex.Message, wex);
}
OAuthTokenResponse response = new OAuthTokenResponse();
response.Token = Regex.Match(responseBody, @"oauth_token=([^&]+)").Groups[1].Value;
response.TokenSecret = Regex.Match(responseBody, @"oauth_token_secret=([^&]+)").Groups[1].Value;
response.UserId = long.Parse(Regex.Match(responseBody, @"user_id=([^&]+)").Groups[1].Value, CultureInfo.CurrentCulture);
response.ScreenName = Regex.Match(responseBody, @"screen_name=([^&]+)").Groups[1].Value;
return response;
}
実行リクエストをヒットするとエラーが発生します。
Web リクエスト ビルダーは次のことを行います。
public HttpWebResponse ExecuteRequest()
{
HttpWebRequest request = PrepareRequest();
return (HttpWebResponse)request.GetResponse();
}
リクエストにパラメータが欠けていると思いますが、何かアイデアはありますか?