分享

新浪接口API调用

 实力决定地位 2012-04-03

                                                                      新浪API2.0调用痕迹                            

最近本人研究怎么调用新浪的接口。一开始由于感觉时间的仓促就从网上找了个实例。哪知道在模拟授权成功了以后进行接口的调用的时候才知道知道。人家验证是OAuth1.0认证。而现在新浪接口是1.0的。老是调用的时候报Http403 五位码表示access_token无效。这样一来我都弄疯了,连续折腾了3天,我都太折腾疯了。总结一句话哥太心急了。搞了半天就是找错。问人。折腾了半天。没有啥人能帮上忙。所以我就下定决心研究别人代码。通过我晚上苦苦的研究终于弄清楚了点思路了。第二天早上一起来灵感移动。其实真的他妈那么简单啊。下面我就给大家介绍我的实现思路。当然我也借助了别人写的SDK.加以我的改变生产了dll文件。提供后续开发这学习。我提供下载地址。希望能给苦命的程序员又所帮助。尤其是像我这样的菜鸟。老鸟当然不需要这些的。废话都不说了。下面就介绍下实现思路吧。

1首先我介绍下OAuth授权的内部原理:

 A:客户端从服务器端获取一个没有经过授权的tonken(一个32位的字符串)

B:用户从客户端获取一个验证编号。

C:客户端向服务器端获取一个成功的授权编号

现在也不说这些内部原理了:直接阐述代码吧。

 

        const long clientID = 1253617897;//|¨o?ì?app_key//获取程序key

        const string responseType = "authorization_code";//这个值好像可以起好多的。集体是代表什么我还是希望别人多多参考新浪API

        const string redirectUri = "http://localhost:1978/sina/URLredirection.aspx";//?ì??ì?这个回调地址是设置在新浪申请的应该平台里面的。。它在高级信息里面设置的。并且可以绑定域名

像我就直接使用127.0.0.1来玩

        const string clientSecret = "";//|¨o?ì?app_secret

        ILog logger = LogManager.GetLogger(typeof(SinaSerive));

        SinaSerive serive = new SinaSerive(clientID.ToString(), clientSecret, redirectUri);

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

        /// <summary>

        /// ?¨¢??¨??¨?code

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        protected void Button1_Click(object sender, EventArgs e)

        {

            serive.GetAuthorizationCode();

            //¨|°?¤|ì?codeì? 这个值每次都要获取才能发送

 

        }

下面的文件是回传地址里面的代码

public partial class URLredirection : System.Web.UI.Page

    {

 

        const long clientID = 1253617897;//|¨o?ì?app_key

        const string responseType = "authorization_code";

        const string redirectUri = "http://localhost:1978/sina/URLredirection.aspx";//?ì??ì?

        const string clientSecret = "a6cecf1c8fdfded99791a38efcde8e55";//|¨o?ì?app_secret

        ILog logger = LogManager.GetLogger(typeof(SinaSerive));

        SinaSerive serive = new SinaSerive(clientID.ToString(), clientSecret, redirectUri);

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

        /// <summary>

        /// ?¨¢?

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        protected void Button1_Click(object sender, EventArgs e)

        {

            try

            {

                serive.GetAccessTokenByAuthorizationCode(Request.QueryString["code"].ToString());//¨?o?codeì?

                User usermodel = serive.Users_Show(Convert.ToInt64(serive.Token.uid));

                Status s = serive.Statuses_Update(this.TextBox1.Text.Trim());

                if (s.id > 0)

                   // Page.ClientScript.RegisterStartupScript(this.GetType(), "1001", "<script>alert(¤?é?ì??¨||ê?)</script>");

                     Response.Write("¨||¢?");

                else

                  //  Page.ClientScript.RegisterStartupScript(this.GetType(), "1002", "<script>alert(¤?é?ì?o?ì?¨1ê?)</script>");

                 Response.Write("o?ì?¨1¢?");

            }

            catch (Exception)

            {

                Response.Write("你所拥有的code失效,必须重新获取¨);

                 //Page.ClientScript.RegisterStartupScript(this.GetType(), "1002", "<script>alert(à?????¨?)</script>");

            }

        }

    }

上面这些乱码我就不整了。。那些乱码要是别人复杂的时候可以把它去掉就行了。如果真的有不明白的地方可以和我探讨学习下。毕竟程序员都是很苦命人。我们苦命的人就互相帮助吧。联系方式QQ:952487152。。。。上面完全属于个人感受以理解。当然我也是表面理解下。如果要深入学习者可以去参考API

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约