tweeter oathor sample

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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值