新浪微博分享

新浪微博分享

准备工作:
a.   获取新浪微博开发者身份(http://open.weibo.com/),一般审核要一天左右(个人使用,选中个人就好,如果选中公司就不能换了)
b.  创建应用,主要的就是包名和签名(签名可以用微博提供的签名工具就好)。请注意:要签名的第三方应用程序必须安装在该设备上才能够生成对应的MD5签名
 首先要安装您需要签名的应用,然后再安装该工具,安装完后,输入您的应用程序的包名,点击生成按钮,即可获得MD5签
c.拿到appkey后也要几个写回调地址(在应用的高级设置里)注:如果只是测试使用只要身份审核就可以了,应用可以不提交审核
d.Libs文件的添加:

1.

   <uses-permissionandroid:name="android.permission.INTERNET" />

   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

2.有关微博的授权方式:

目前微博SDK为开发者提供三种授权方式:

    SSO授权:仅当手机安装新浪微博。客户端时使用 SSO 授权登陆

    Web 授权:在没有客户端的情况下,可直接使用该授权

    SSO+Web  授权: 如果手机端安装了新浪微博客户端的话会默认发起SSO授权,反之则进行Web授权 (推荐使用,all in one)

这里使用第三种:注:此种授权方式会根据手机是否安装微博客户端来决定使用sso授权还是网页授权,如果安装有微博客户端 则调用微博客户端授权,否则调用Web页面方式授权

1. 分享方式 all in one 微博和web都可以

代码:

Constants.java;该类定义了微博授权时所需要的参数。

publicinterface Constants {

    /** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */

    publicstaticfinal String APP_KEY  = "你的AppKey";

    

    /** 

     * 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。建议使用默认回调页:https://api.weibo.com/oauth2/default.html

     */

    //授权回调

    publicstaticfinal String REDIRECT_URL = "你的授权回调页面";

    

    /**

     * Scope 是 OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利选择赋予应用的功能。
我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的使用权限,高级权限需要进行申请。目前 Scope 支持传入多个 Scope 权限,用逗号分隔。有关哪些 OpenAPI 需要权限申请,
请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI;关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope

     */

    publicstaticfinal String SCOPE = 

            "email,direct_messages_read,direct_messages_write,"

            + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"

            + "follow_app_official_microblog," + "invitation_write";

}

AccessTokenKeeper.java;//存放获取授权信息

publicclass AccessTokenKeeper {

    privatestaticfinal String PREFERENCES_NAME = "myweboShare";

 

    privatestaticfinal String KEY_UID          = "uid";

    privatestaticfinal String KEY_ACCESS_TOKEN = "access_token";

    privatestaticfinal String KEY_EXPIRES_IN    = "expires_in";

    privatestaticfinal String KEY_REFRESH_TOKEN   = "refresh_token"; 

    /**

     * 保存 Token 对象到 SharedPreferences。

     * 

     * @param context 应用程序上下文环境

     * @param token  Token 对象

     */

    publicstaticvoid writeAccessToken(Context context,Oauth2AccessToken token) {

        if (null == context || null == token) {

            return;

        }    

        SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);

        Editor editor = pref.edit();

        editor.putString(KEY_UID, token.getUid());

        editor.putString(KEY_ACCESS_TOKEN, token.getToken());

        editor.putString(KEY_REFRESH_TOKEN, token.getRefreshToken());

        editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());

        editor.commit();

    }

    /**

     * 从 SharedPreferences 读取 Token 信息。

     * 

     * @param context 应用程序上下文环境

     * 

     * @return返回 Token 对象

     */

    publicstatic Oauth2AccessToken readAccessToken(Context context) {

        if (null == context) {

            returnnull;

        }

        

        Oauth2AccessToken token = new Oauth2AccessToken();

        SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);

        token.setUid(pref.getString(KEY_UID, ""));

        token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));

        token.setRefreshToken(pref.getString(KEY_REFRESH_TOKEN, ""));

        token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));

        

        return token;

    }

 

    /**

     * 清空 SharedPreferences 中 Token信息。

     * 

     * @param context 应用程序上下文环境

     */

    publicstaticvoid clear(Context context) {

        if (null == context) {

            return;

        }

        SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);

        Editor editor = pref.edit();

        editor.clear();

        editor.commit();

    }}


 

 
<span style="font-size:14px;">
demo地址:http://download.csdn.net/detail/u010904027/9146939</span>
将appkey以及Secret替换成自己,还有授权:

结果:


授权分享:



分享到微博客端,并在客户端查看:



分享中遇到的问题:

1.授权初始化失败,签名写错


2.没有安装客户端




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值