新浪开放平台:解决获取access_token抛 21323 异常,以及接口调用

  1. 使用新浪开放平台的准备
    1)要注册一个新浪微博,并在新浪开放平台登陆(http://open.weibo.com/)
       
    2)创建应用
         154514_69uw_2487410.png
        这里以创建“移动应用”为例子,注意并非“移动应用”不可;

        154805_Vg9g_2487410.png    
        上面的资料填写完,点“创建”,一个简单的应用就创建好,点“我的应用”即可看到你刚刚新建的应用。
        155019_iFVj_2487410.png


     
    1. OAuth2.0授权,以及获取access_token的陷阱
      1)获取授权码:code。获取获取授权码的方法可以在开放平台的文档获得: http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5  下面来简单说一下怎么获取授权码:
      首先是组合以下url:
      https://api.weibo.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=code
      sadasd上面的url,需要填入 CLIENT_IDREDIRECT_URI 两个参数,第一个是你应用的AppKey,第二个是回调页面的url

      AppKey可以在“我的应用”的控制台获得:

      194325_1JrC_2487410.png

      回调页面的url在“我的应用”->"应用信息"->"高级信息" 设置,App Secret(获取access_token的时候要用到) 也可以在这里获得:

      194559_6x6u_2487410.png

      以下是一个例子:
      https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
      
      组合完成后,将这个链接放到你希望被用户触发的位置,比如你可以放到一个网页上:
      170128_XiV8_2487410.png
      170209_ZZ6c_2487410.png

      161406_NkJS_2487410.png

      授权及会发送授权码给刚刚填写的回调页面。

      162055_a22o_2487410.png
      2)根据接收到的授权码获取access_token,同样这个在开放平台中也有教程,但是这个教程是错的 ( >_< !) ,下面先说一下这个坑,然后再或以下正确的获取方式。
      2.1)官方的误导教程:
      162708_DB6m_2487410.png
      官方上写的是用POST请求获取access_token的接口,那么一般都会想到用 curl 来做post请求:
      163054_Xe4B_2487410.png
      好了,配好,程序跑起来,等待返回access_token……结果是:

      '{"error":"invalid_request","error_code":21323,"request":"/2/oauth2/access_token","error_uri":"/2/oauth2/access_token","error_description":"miss client id or secret"}'

      无论你是怎么测试,怎么改顺序都是抛这个异常。我蛮仔细看看抛出的异常: miss client id or secret  上面写着是 client_id 或 secret丢失,反复查看,输出这两个参数,然而不没有发现有丢失。至此,依然认为不是新浪的错(毕竟新浪已经做得那么大,不至于犯这种小错误),然后我重复地仔细地看光放的文档,看是不是我漏了什么关键点。然后,最后发现并没有,我开始认为是新浪的错,经过一轮百度以及头脑风暴,(请允许我做个悲伤的表情)真的是新浪的错,传参根本不是用post,估计他接受也不是用post的方式接受,所以才会一直抛出  miss client id or secret  的异常,可恶的是真正的传参方式竟然是GET,是GET,是GET……那ntm写那么大个POST是几个意思,而且压根不GET又是几个意思,这是砸自己招牌的节奏,此刻我内心崩溃的。

      2.2)正确的获取access_token的方式
          策略:GET和POST混合:用GET去传递参数,CURL(POST)来返回access_token。

          164841_mfLQ_2487410.png

      上图红框内的url,即为传参的方式,而下面则是用 POST来请求数据。

      下面是请求道数据(json格式):
      165123_f518_2487410.png
  2. 调用获取“公共微博”的接口
    开放平台是有教程的:http://open.weibo.com/wiki/2/statuses/public_timeline
    下面简单说一下:
    1)将要请求的url:
    165444_r5MG_2487410.png
    2)需要传递的参数:
    165533_dw6U_2487410.png
    只有access_token是必须的,其他的参数都是可选的。

    请求方式是GET,所以直接用file_get_content即可:
    165744_MpKc_2487410.png
    程序跑起来就可以返回一堆json格式的数据。注意:请求时是有频次限制的。
     

转载于:https://my.oschina.net/u/2487410/blog/679991

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值