using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OAuth;
using System.Net;
using System.IO;
using System.Web;
using System.Diagnostics;
class Program
{
//string apiKey = "v6XNrgQetWRp44LFojUw";
// string apiKeySecret = "JRzQszYtGgUXomCvYYB3dsmfQvUtqGzRDjPVEH7fDg";
// string requestToken = "";
// string requestTokenSecret = "";
//public string accessToken = "";
// string accessTokenSecret = "";
// Uri requestTokenUri = new Uri("http://api.justin.tv/oauth/request_token");
// Uri accessTokenUri = new Uri("http://api.justin.tv/oauth/access_token");
// string authorizationUri = "http://api.justin.tv/oauth/authorize";
string apiKey = "EMCZN8TJgMuCnvXtcTFg";
string apiKeySecret = "EqnzAjR2MyCgMt1o7N6xrnmaIcJM2SHRB0D7RMiM8";
string requestToken = "";
string requestTokenSecret = "";
public string accessToken = "";
string accessTokenSecret = "";
Uri requestTokenUri = new Uri("https://api.twitter.com/oauth/request_token");
Uri accessTokenUri = new Uri("https://api.twitter.com/oauth/access_token");
string authorizationUri = "https://api.twitter.com/oauth/authenticate";
OAuthBase oAuth = new OAuthBase();
private Dictionary<string, string> parseResponse(string parameters)
{
Dictionary<string, string> result = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(parameters))
{
string[] p = parameters.Split('&');
foreach (string s in p)
if (!string.IsNullOrEmpty(s))
if (s.IndexOf('=') > -1)
{
string[] temp = s.Split('=');
result.Add(temp[0], temp[1]);
}
else result.Add(s, string.Empty);
}
return result;
}
//1. 获取Request Token,该步骤使用API Key和API Key Secret签名
public void getRequestToken()
{
Uri uri = requestTokenUri;
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uri,
apiKey,
apiKeySecret,
string.Empty,
string.Empty,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造请求Request Token的url
StringBuilder sb = new StringBuilder(uri.ToString());
sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);
sb.AppendFormat("oauth_nonce={0}&", nonce);
sb.AppendFormat("oauth_timestamp={0}&", timeStamp);
sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
sb.AppendFormat("oauth_version={0}&", "1.0");
sb.AppendFormat("oauth_signature={0}", sig);
Console.WriteLine("请求Request Token的url: \n" + sb.ToString());
//请求Request Token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
Console.WriteLine("请求Request Token的返回值: \n" + responseBody);
//解析返回的Request Token和Request Token Secret
Dictionary<string, string> responseValues = parseResponse(responseBody);
requestToken = responseValues["oauth_token"];
requestTokenSecret = responseValues["oauth_token_secret"];
}
// 2. 用户确认授权
public void authorization()
{
//生成引导用户授权的url
string url = authorizationUri + "?oauth_token=" + requestToken;
Process.Start(url);
// Console.WriteLine("请将下面url粘贴到浏览器中,并同意授权,同意后按任意键继续:");
// Console.WriteLine(url);
}
// 3. 换取Access Token,该步骤使用API Key、API Key Secret、Request Token和Request Token Secret签名
public void getAccessToken()
{
Uri uri = accessTokenUri;
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uri,
apiKey,
apiKeySecret,
requestToken,
requestTokenSecret,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造请求Access Token的url
StringBuilder sb = new StringBuilder(uri.ToString());
sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);
sb.AppendFormat("oauth_nonce={0}&", nonce);
sb.AppendFormat("oauth_timestamp={0}&", timeStamp);
sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
sb.AppendFormat("oauth_version={0}&", "1.0");
sb.AppendFormat("oauth_signature={0}&", sig);
sb.AppendFormat("oauth_token={0}&", requestToken);
Console.WriteLine("请求Access Token的url: \n" + sb.ToString());
//请求Access Token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
Console.WriteLine("请求Access Token的返回值: \n" + responseBody);
//解析返回的Request Token和Request Token Secret
Dictionary<string, string> responseValues = parseResponse(responseBody);
accessToken = responseValues["oauth_token"];
accessTokenSecret = responseValues["oauth_token_secret"];
}
public string getStreamKey()
{
Uri uriStreamKey = new Uri("http://api.justin.tv/api/channel/stream_key.xml");
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uriStreamKey,
apiKey,
apiKeySecret,
accessToken,
accessTokenSecret,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造OAuth头部
StringBuilder oauthHeader = new StringBuilder();
oauthHeader.AppendFormat("OAuth realm=\"\", oauth_consumer_key={0}, ", apiKey);
oauthHeader.AppendFormat("oauth_nonce={0}, ", nonce);
oauthHeader.AppendFormat("oauth_timestamp={0}, ", timeStamp);
oauthHeader.AppendFormat("oauth_signature_method={0}, ", "HMAC-SHA1");
oauthHeader.AppendFormat("oauth_version={0}, ", "1.0");
oauthHeader.AppendFormat("oauth_signature={0}, ", sig);
oauthHeader.AppendFormat("oauth_token={0}", accessToken);
构造请求
//StringBuilder requestBody = new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
//requestBody.Append("<entry xmlns:ns0=\"http://www.w3.org/2005/Atom\" xmlns:db=\"http://www.douban.com/xmlns/\">");
//requestBody.Append("<content>C# OAuth认证成功</content>");
//requestBody.Append("</entry>");
//Encoding encoding = Encoding.GetEncoding("utf-8");
//byte[] data = encoding.GetBytes(requestBody.ToString());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriStreamKey);
request.Headers.Set("Authorization", oauthHeader.ToString());
request.Method = "GET";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
return responseBody;
}
catch (WebException e)
{
return null;
}
}
static void Main(string[] args)
{
try
{
//http://www.justin.tv/live/stream_key?login=senophen&password=111111
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.justin.tv/live/stream_key?login=senophen&password=111111");
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
//string responseBody = stream.ReadToEnd();
//stream.Close();
//response.Close();
Program p = new Program();
p.getRequestToken();
p.authorization();
p.getAccessToken();
string str = p.getStreamKey();
}
catch (System.Exception ex)
{
Console.Write("Bad Request!! \n" + ex.ToString());
}
System.Console.ReadLine();
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OAuth;
using System.Net;
using System.IO;
using System.Web;
using System.Diagnostics;
class Program
{
//string apiKey = "v6XNrgQetWRp44LFojUw";
// string apiKeySecret = "JRzQszYtGgUXomCvYYB3dsmfQvUtqGzRDjPVEH7fDg";
// string requestToken = "";
// string requestTokenSecret = "";
//public string accessToken = "";
// string accessTokenSecret = "";
// Uri requestTokenUri = new Uri("http://api.justin.tv/oauth/request_token");
// Uri accessTokenUri = new Uri("http://api.justin.tv/oauth/access_token");
// string authorizationUri = "http://api.justin.tv/oauth/authorize";
string apiKey = "EMCZN8TJgMuCnvXtcTFg";
string apiKeySecret = "EqnzAjR2MyCgMt1o7N6xrnmaIcJM2SHRB0D7RMiM8";
string requestToken = "";
string requestTokenSecret = "";
public string accessToken = "";
string accessTokenSecret = "";
Uri requestTokenUri = new Uri("https://api.twitter.com/oauth/request_token");
Uri accessTokenUri = new Uri("https://api.twitter.com/oauth/access_token");
string authorizationUri = "https://api.twitter.com/oauth/authenticate";
OAuthBase oAuth = new OAuthBase();
private Dictionary<string, string> parseResponse(string parameters)
{
Dictionary<string, string> result = new Dictionary<string, string>();
if (!string.IsNullOrEmpty(parameters))
{
string[] p = parameters.Split('&');
foreach (string s in p)
if (!string.IsNullOrEmpty(s))
if (s.IndexOf('=') > -1)
{
string[] temp = s.Split('=');
result.Add(temp[0], temp[1]);
}
else result.Add(s, string.Empty);
}
return result;
}
//1. 获取Request Token,该步骤使用API Key和API Key Secret签名
public void getRequestToken()
{
Uri uri = requestTokenUri;
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uri,
apiKey,
apiKeySecret,
string.Empty,
string.Empty,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造请求Request Token的url
StringBuilder sb = new StringBuilder(uri.ToString());
sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);
sb.AppendFormat("oauth_nonce={0}&", nonce);
sb.AppendFormat("oauth_timestamp={0}&", timeStamp);
sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
sb.AppendFormat("oauth_version={0}&", "1.0");
sb.AppendFormat("oauth_signature={0}", sig);
Console.WriteLine("请求Request Token的url: \n" + sb.ToString());
//请求Request Token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
Console.WriteLine("请求Request Token的返回值: \n" + responseBody);
//解析返回的Request Token和Request Token Secret
Dictionary<string, string> responseValues = parseResponse(responseBody);
requestToken = responseValues["oauth_token"];
requestTokenSecret = responseValues["oauth_token_secret"];
}
// 2. 用户确认授权
public void authorization()
{
//生成引导用户授权的url
string url = authorizationUri + "?oauth_token=" + requestToken;
Process.Start(url);
// Console.WriteLine("请将下面url粘贴到浏览器中,并同意授权,同意后按任意键继续:");
// Console.WriteLine(url);
}
// 3. 换取Access Token,该步骤使用API Key、API Key Secret、Request Token和Request Token Secret签名
public void getAccessToken()
{
Uri uri = accessTokenUri;
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uri,
apiKey,
apiKeySecret,
requestToken,
requestTokenSecret,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造请求Access Token的url
StringBuilder sb = new StringBuilder(uri.ToString());
sb.AppendFormat("?oauth_consumer_key={0}&", apiKey);
sb.AppendFormat("oauth_nonce={0}&", nonce);
sb.AppendFormat("oauth_timestamp={0}&", timeStamp);
sb.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
sb.AppendFormat("oauth_version={0}&", "1.0");
sb.AppendFormat("oauth_signature={0}&", sig);
sb.AppendFormat("oauth_token={0}&", requestToken);
Console.WriteLine("请求Access Token的url: \n" + sb.ToString());
//请求Access Token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sb.ToString());
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
Console.WriteLine("请求Access Token的返回值: \n" + responseBody);
//解析返回的Request Token和Request Token Secret
Dictionary<string, string> responseValues = parseResponse(responseBody);
accessToken = responseValues["oauth_token"];
accessTokenSecret = responseValues["oauth_token_secret"];
}
public string getStreamKey()
{
Uri uriStreamKey = new Uri("http://api.justin.tv/api/channel/stream_key.xml");
string nonce = oAuth.GenerateNonce();
string timeStamp = oAuth.GenerateTimeStamp();
string normalizeUrl, normalizedRequestParameters;
// 签名
string sig = oAuth.GenerateSignature(
uriStreamKey,
apiKey,
apiKeySecret,
accessToken,
accessTokenSecret,
"GET",
timeStamp,
nonce,
OAuthBase.SignatureTypes.HMACSHA1,
out normalizeUrl,
out normalizedRequestParameters);
sig = HttpUtility.UrlEncode(sig);
//构造OAuth头部
StringBuilder oauthHeader = new StringBuilder();
oauthHeader.AppendFormat("OAuth realm=\"\", oauth_consumer_key={0}, ", apiKey);
oauthHeader.AppendFormat("oauth_nonce={0}, ", nonce);
oauthHeader.AppendFormat("oauth_timestamp={0}, ", timeStamp);
oauthHeader.AppendFormat("oauth_signature_method={0}, ", "HMAC-SHA1");
oauthHeader.AppendFormat("oauth_version={0}, ", "1.0");
oauthHeader.AppendFormat("oauth_signature={0}, ", sig);
oauthHeader.AppendFormat("oauth_token={0}", accessToken);
构造请求
//StringBuilder requestBody = new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
//requestBody.Append("<entry xmlns:ns0=\"http://www.w3.org/2005/Atom\" xmlns:db=\"http://www.douban.com/xmlns/\">");
//requestBody.Append("<content>C# OAuth认证成功</content>");
//requestBody.Append("</entry>");
//Encoding encoding = Encoding.GetEncoding("utf-8");
//byte[] data = encoding.GetBytes(requestBody.ToString());
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriStreamKey);
request.Headers.Set("Authorization", oauthHeader.ToString());
request.Method = "GET";
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
string responseBody = stream.ReadToEnd();
stream.Close();
response.Close();
return responseBody;
}
catch (WebException e)
{
return null;
}
}
static void Main(string[] args)
{
try
{
//http://www.justin.tv/live/stream_key?login=senophen&password=111111
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.justin.tv/live/stream_key?login=senophen&password=111111");
//HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//StreamReader stream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
//string responseBody = stream.ReadToEnd();
//stream.Close();
//response.Close();
Program p = new Program();
p.getRequestToken();
p.authorization();
p.getAccessToken();
string str = p.getStreamKey();
}
catch (System.Exception ex)
{
Console.Write("Bad Request!! \n" + ex.ToString());
}
System.Console.ReadLine();
}
}