11

Android研究院之新浪微博XAuth方式授权与发送(十七)

 3 years ago
source link: https://www.xuanyusong.com/archives/697
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近有朋友说他申请的KEY无法使用 原因是XAuth申请KEY是需求的 ,因为我的KEY是用公司提供的所以已经满足XAuth的申请条件所以可以使用。请大家仔细看看下面官方提供的内容。

申请的条件:http://open.weibo.com/wiki/XAuth

xAuth申请需求

因为xAuth依然会获得用户明文密码,xAuth实行有限开放。开发初期建议使用桌面客户端使用OAuth,移动客户端使用WAP 1.0或者2.0版页面授权。当用户数量达到一定规模后再使用xAuth提升用户体验。
xAuth申请条件:

  应用分类属于桌面客户端、手机客户端。

  应用本身已经通过开放平台文案、广场审核,并在广场上展示超过15天。
应用使用人数在3000以上。
应用本身功能与新浪微博关联紧密。

任何一个开发者都需要申请新浪微博的ConsumerKey 和 ConsumerSecret 

申请地址:http://open.weibo.com/devel.php

点击创建应用根据提示一步一步来 这里笔者就不详细说明了

下面是代码部分请认真阅读

//consumerKey 与 consumerSecret 须要自己去官方申请
System.setProperty("weibo4j.oauth.consumerKey","XXXX");
System.setProperty("weibo4j.oauth.consumerSecret","XXXX");
Weibo weibo = new Weibo();
String userId = "XXXX";
//新浪微博的帐号
String passWord = "XXXX";
//新浪微博的密码
    weibo.getXAuthAccessToken(userId, passWord,"client_auth");
    weibo.updateStatus("发表一条新浪微博");}
    catch (WeiboException e) {
       e.printStackTrace();
      if(e.getStatusCode() == 400) {
      //内容重复,新浪微博不允许重复的内容发布 如果内容重复会在这里抛出异常
      }else if (e.getStatusCode() == 403) {
      //帐号密码错误
      return;

 帐号密码授权只需要一次

大功告成 这样就授权成功并且发送了一条微薄 不过这样还不是完美 因为如果每次都用同样的帐号发送微薄的话 没有必要每次都授权 授权成功一次后 就可以把Token 与 TokenSecret 存下来 以后在发送微薄只须要把Token 与 TokenSecret 读出来就可以直接发。

发表成功

储存Token 与 TokenSecret

    AccessToken accessToken = weibo.getXAuthAccessToke(userId,passWord,"client_auth");
    String Token = accessToken.getToken();
    String TokenSecret = accessToken.getTokenSecret();
    //在这里拿到了 Token 与 TokenSecret 可以把它存在Shared Preferences 中以后每次独取出来就可以用
    weibo.updateStatus("将Token 与 TokenSecret 存入 Shared Preferences ");
    } catch (WeiboException e) {}

读取Token 与 TokenSecret

读取到之前授权的KEY

    //Token与TokenSecret 可以在Shared Preferences 中取得之前存的内容
    String Token = null;
    String TokenSecret = null;
    weibo.setOAuthAccessToken(Token, TokenSecret);
    //这样就不用每次都通过帐号密码获取    
    AccessToken了weibo.updateStatus("在Shared Preferences 中取得Token与TokenSecret");
    } catch (WeiboException e) {}

 微薄的异常类WeiboException

我们使用API接口 出现的异常WeiboException会帮我们捕获下来比如

帐号密码错误:e.getStatusCode() = 403

重复发送微薄:e.getStatusCode() = 400

等等,代码实现的话我们可以在底层把这些异常throws 到上层,在上面去处理这些异常

下面这个链接是新浪官方提供的API错误代码 大家可以根据须要仔细阅读

http://open.weibo.com/wiki/index.php/Help/error


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK