腾讯微博SDK Check sign error

 

1.      快速接入腾讯微博

可以到https://github.com/wbopenplatform/Android_SDK地址下载腾讯封装的sdk直接引入如下jar

使用可参考腾讯微博官方地址:http://wiki.open.t.qq.com/index.php/SDK%E4%B8%8B%E8%BD%BD#Android_SDK

2.      AndroidManifest.xml文件中导入在手机未安装腾讯微博无法使用sso登录的情况需要应用内部调用显示授权页面

<activity android:name="com.tencent.weibo.sdk.android.component.Authorize">

</activity>

3.      引入授权代码,调用auth()方法直接传入你自己在腾讯微博申请的appidapp_secret

privatevoid auth(long appid, Stringapp_secket) {

       final Context context = this.getApplicationContext();

       // 注册当前应用的appidappkeysec,并指定一个OnAuthListener

       // OnAuthListener在授权过程中实施监听

    AuthHelper.register(this, appid,app_secket, new OnAuthListener() {

 

privatevoid auth(long appid, Stringapp_secket) {

       final Context context = this.getApplicationContext();

       // 注册当前应用的appidappkeysec,并指定一个OnAuthListener

       // OnAuthListener在授权过程中实施监听

       AuthHelper.register(this, appid, app_secket, new OnAuthListener() {

 

           // 如果当前设备没有安装腾讯微博客户端,走这里

           @Override

           publicvoid onWeiBoNotInstalled() {

              Toast.makeText(MainPageActivity.this, "onWeiBoNotInstalled",

                     1000).show();

              AuthHelper.unregister(MainPageActivity.this);

              Intent i = new Intent(MainPageActivity.this, Authorize.class);

              startActivity(i);

           }

 

           // 如果当前设备没安装指定版本的微博客户端,走这里

           @Override

           publicvoid onWeiboVersionMisMatch() {

              Toast.makeText(MainPageActivity.this, "onWeiboVersionMisMatch",

                     1000).show();

              AuthHelper.unregister(MainPageActivity.this);

              Intent i = new Intent(MainPageActivity.this, Authorize.class);

              startActivity(i);

           }

 

           // 如果授权失败,走这里

           @Override

           publicvoid onAuthFail(int result, String err) {

              Toast.makeText(MainPageActivity.this, "result : " + result,

                     1000).show();

              AuthHelper.unregister(MainPageActivity.this);

           }

 

           // 授权成功,走这里

           // 授权成功后,所有的授权信息是存放在WeiboToken对象里面的,可以根据具体的使用场景,将授权信息存放到自己期望的位置,

           // 在这里,存放到了applicationcontext

           @Override

           publicvoid onAuthPassed(String name, WeiboToken token) {

              Toast.makeText(MainPageActivity.this, "passed", 1000).show();

              //

              Util.saveSharePersistent(context, "ACCESS_TOKEN",

                     token.accessToken);

              Util.saveSharePersistent(context, "EXPIRES_IN",

                     String.valueOf(token.expiresIn));

              Util.saveSharePersistent(context, "OPEN_ID", token.openID);

              //Util.saveSharePersistent(context, "OPEN_KEY", token.omasKey);

              Util.saveSharePersistent(context, "REFRESH_TOKEN", "");

              //Util.saveSharePersistent(context, "NAME", name);

              //Util.saveSharePersistent(context, "NICK", name);

              Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig()

                     .getProperty("APP_KEY"));

              Util.saveSharePersistent(context, "AUTHORIZETIME",

                     String.valueOf(System.currentTimeMillis()/ 1000l));

              AuthHelper.unregister(MainPageActivity.this);

           }

       });

 

       AuthHelper.auth(this, "");

    }

4.      实现调用发送文本消息功能,获取到授权存储的accessToken信息,调用发送addWeibo()接口发送微博,其他接口调用可参考下载下来的工程代码,运行就可以看到,很简单

accessToken = Util.getSharePersistent(getApplicationContext(),

              "ACCESS_TOKEN");

       if (accessToken == null || "".equals(accessToken)) {

           Toast.makeText(MainActivity.this, "请先授权",

                  Toast.LENGTH_SHORT).show();

           this.finish();

           return ;

       }else{

           AccountModel account = new AccountModel(accessToken);

           weiboAPI = new WeiboAPI(account);

           //发送微博

weiboAPI.addWeibo(context, "甜甜甜甜甜23423423234222", requestFormat,

                  0d, 0d, 0, 0, mCallBack, null, BaseVO.TYPE_JSON);

       }

5.       

在测试授权过程中会发现提示checksign error错误,在授权成功时我们会持久化信息,腾讯微博给的demo没有说明引入后我们需要做哪些修改,在测试中发现需要在成功授权以后会持久化一些信息

Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig()

会持久化app_key,我们需要修改为我们自己申请的key

通过查看从git上下载下来源代码发现发送微博时会传送oauth_consumer_key参数,值应该是申请的app_key,若传递错误的话会导致check sign error错误

publicvoid addWeibo(Context context, String content, String format,

           double longitude, double latitude, int syncflag,

           int compatibleflag, HttpCallback mCallBack,

           Class<? extends BaseVO> mTargetClass, int resultType) {

       ReqParam mParam = new ReqParam();

       mParam.addParam("oauth_version", "2.a");

       mParam.addParam("oauth_consumer_key",

              Util.getSharePersistent(context, "CLIENT_ID"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值