Android 使用新浪微博SSO授权

微博SDK第三方授权登陆 第三方登陆大致流程 1.注册微博开发者账号 2.进入微博开放平台创建应用获取APP key 和APP Secret  3.给应用签名,获取MD5签名 4.在应用中嵌入代码 第一步略过. 阅读详情

新浪微博SSO授权,很早就做好了,只是一直没有时间整理博客,今天加班,晚上闲暇之时便想到整理一下。由于整个七月份很忙,加班很多。前段时间把腾讯微博的SSO认证整理好了。想在七月份翻篇之前再写点东西。好了,不多说废话了,下面就说说关于新浪微博SSO认证的内容。

新浪微博比较简单,而且很方便使用。由于在腾讯微博中我有讲到SSO认证的过程,这里主要是看看新浪微博demo中的MainActivity,这个类中告诉我们如何进行新浪微博的授权,按照这个范例来做就可以的。下面是这个类的源码


demo下载地址:http://download.youkuaiyun.com/detail/hap_gx/5825829


package com.weibo.sdk.android.demo;

import java.text.SimpleDateFormat;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
import com.weibo.sdk.android.keep.AccessTokenKeeper;
import com.weibo.sdk.android.sso.SsoHandler;
import com.weibo.sdk.android.util.Utility;
/**
 * 
 * @author liyan (liyan9@staff.sina.com.cn) 这位是新浪SSO认证的开发者,很优秀的开发者
 */
public class MainActivity extends Activity {

    private Weibo mWeibo;
    private static final String CONSUMER_KEY = "966056985";// 替换为开发者的appkey,例如"1646212860";
    private static final String REDIRECT_URL = "http://www.sina.com";
    private Button authBtn, apiBtn, ssoBtn, cancelBtn;
    private TextView mText;
    public static Oauth2AccessToken accessToken;
    public static final String TAG = "sinasdk";
    /**
     * SsoHandler 仅当sdk支持sso时有效,
     */
    SsoHandler mSsoHandler;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);

        authBtn = (Button) findViewById(R.id.auth);
        authBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mWeibo.authorize(MainActivity.this, new AuthDialogListener());
            }
        });
        ssoBtn = (Button) findViewById(R.id.sso);// 触发sso的按钮
        try {
            Class sso = Class.forName("com.weibo.sdk.android.sso.SsoHandler");
            ssoBtn.setVisibility(View.VISIBLE);
        } catch (ClassNotFoundException e) {
            Log.i(TAG, "com.weibo.sdk.android.sso.SsoHandler not found");

        }
        ssoBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                /**
                 * 下面两个注释掉的代码,仅当sdk支持sso时有效,
                 */

                mSsoHandler = new SsoHandler(MainActivity.this, mWeibo);
                mSsoHandler.authorize(new AuthDialogListener());
            }
        });
        cancelBtn = (Button) findViewById(R.id.apiCancel);
        cancelBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                AccessTokenKeeper.clear(MainActivity.this);
                authBtn.setVisibility(View.VISIBLE);
                ssoBtn.setVisibility(View.VISIBLE);
                cancelBtn.setVisibility(View.INVISIBLE);
                mText.setText("");
            }
        });

        mText = (TextView) findViewById(R.id.show);
        MainActivity.accessToken = AccessTokenKeeper.readAccessToken(this);
        if (MainActivity.accessToken.isSessionValid()) {
            Weibo.isWifi = Utility.isWifi(this);
            try {
                Class sso = Class.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
                apiBtn.setVisibility(View.VISIBLE);
            } catch (ClassNotFoundException e) {
                // e.printStackTrace();
                Log.i(TAG, "com.weibo.sdk.android.api.WeiboAPI not found");

            }
            authBtn.setVisibility(View.INVISIBLE);
            ssoBtn.setVisibility(View.INVISIBLE);
            cancelBtn.setVisibility(View.VISIBLE);
            String date = new java.text.SimpleDateFormat("yyyy/MM/dd hh:mm:ss")
                    .format(new java.util.Date(MainActivity.accessToken
                            .getExpiresTime()));
            mText.setText("access_token 仍在有效期内,无需再次登录: \naccess_token:"
                    + MainActivity.accessToken.getToken() + "\n有效期:" + date);
        } else {
            mText.setText("使用SSO登录前,请检查手机上是否已经安装新浪微博客户端,目前仅3.0.0及以上微博客户端版本支持SSO;如果未安装,将自动转为Oauth2.0进行认证");
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    class AuthDialogListener implements WeiboAuthListener {

        @Override
        public void onComplete(Bundle values) {
            String token = values.getString("access_token");
            String expires_in = values.getString("expires_in");
            MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
            if (MainActivity.accessToken.isSessionValid()) {
                String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
                        .format(new java.util.Date(MainActivity.accessToken
                                .getExpiresTime()));
                mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
                        + "expires_in: " + expires_in + "\r\n有效期:" + date);
                try {
                    Class sso = Class
                            .forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
                    apiBtn.setVisibility(View.VISIBLE);
                } catch (ClassNotFoundException e) {
                    // e.printStackTrace();
                    Log.i(TAG, "com.weibo.sdk.android.api.WeiboAPI not found");

                }
                cancelBtn.setVisibility(View.VISIBLE);
                AccessTokenKeeper.keepAccessToken(MainActivity.this,
                        accessToken);
                Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
                        .show();
            }
        }

        @Override
        public void onError(WeiboDialogError e) {
            Toast.makeText(getApplicationContext(),
                    "Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(), "Auth cancel",
                    Toast.LENGTH_LONG).show();
        }

        @Override
        public void onWeiboException(WeiboException e) {
            Toast.makeText(getApplicationContext(),
                    "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
                    .show();
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        /**
         * 下面两个注释掉的代码,仅当sdk支持sso时有效,
         */
        if (mSsoHandler != null) {
            mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
        }
    }

}


【Android开发日记】 新浪微博API SSO授权 分享 其实新浪API的说明文档已经说的很明白了,demo 阅读详情

相关推荐

最新版新浪微博Android SDK集成与实战指南

新浪微博Android SDK V2.0.0基于OAuth 2.0协议重构授权体系,引入SSO(单点登录)机制,提升用户体验与安全性。SDK采用模块化设计,分离授权、分享、API调用等核心功能,支持Gradle依赖管理与JAR包集成双模式。JAR 包主要由以下几个核心包组成::授权相关类,如WeiboAuth:SSO 跳转处理类,核心为SsoHandler:工具类,包括签名生成、Intent 构造等:消息传递对象定义,用于分享和授权参数封装。

weixin_30798867的博客 1251

Android新浪微博之登陆授权

package com.weibo.main; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.content.Intent; import android.os.Bundle; i

哦啦啦。的专栏 902

微博授权登录和分享

授权登录必须签名,签名和appid匹配,APPID可以写自己的

Android weibo Oauth认证

Oauth认证流程 首先,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0,填写地址:http://open.weibo.com/apps/应用APPKEY/privilege/oauth 对于客户端也提供了默认的回调页地址 填写的回调地址为 http://www.sina.com 也可以是http://open.weibo.com/apps/4044

woshishuoshuoa的专栏 929

sinaweibosdk:新浪微博sdk这个是官方4月的没有打jar包完全的weibosdk源码! 7月更新的sso登录有大问题

新浪微博 新浪微博sdk非官方的官方的7月更新的sso登录有大问题自己体会把这个版本的源码没有打jar包可以自己随便删减

用Matlab搞定Delta并联机器人运动学:从建模到正逆解完整流程(附代码)

本文详细介绍了如何使用Matlab实现Delta并联机器人的运动学分析,包括几何建模、正逆解求解及可视化验证。通过符号计算和数值迭代法,解决非线性方程组问题,并提供完整代码示例,帮助读者快速掌握Delta机器人的运动学计算与应用。

weixin_30955617的博客 177

[Android] 使用新浪微博SDK进行SSO登录

1. 简述     现在已经是2013年7月份了,最新的SDK还是去年8月份出的,最近没怎么更新的说。     SDK的下载链接:http://open.weibo.com/wiki/SDK,其中文档内容很详细,本文仅介绍其中与SSO登录相关的内容。 2. 准备的内容     Comsume Key和Redirect Url,具体获取方法,见SDK内的”Weibo_Android_

小彼得的专栏 1938

【水下小目标检测】SWIPENet与样本重加权:应对模糊与噪声的深度学习策略

本文深入探讨了水下小目标检测的挑战与解决方案,重点介绍了SWIPENet网络架构与IMA样本重加权算法。通过空洞卷积模块、特征金字塔重构和多尺度预测机制,SWIPENet有效提升了模糊目标的检测精度。结合Invert Multi-Class Adaboost算法,系统性地解决了水下环境中的样本不均衡问题,在URPC数据集上实现了48.8%的mAP,特别适合海洋生物检测等应用场景。

weixin_29057163的博客 345

Android实现新浪微博SSO授权登录分享文字图片等功能(WEIBO_ANDROID_SDK V2.3.0 )

新浪开发平台:http://open.weibo.com 新浪微博分享目前分为两种途径: 1,直接在自己的APP,弹出类似Dialog(sina集成)来完成授权,授权成功后可直接分享内容,全程都是在自己APP里完成分享。老版本的微博SDK中集成了弹出分享Dialog(WebView)的视图,以及插入文字、图片、URL等API,直接调用接口中的update就可以分享,此方法是在自

其实并不难,是你太悲观 3万+

2019年上交电院计算机直博保研经历

本人选报的是上交六月一日在武汉举办的直博选拔,五月三十一日到达酒店,地点在武汉大学旁边(PS:上交是不管住宿、来回车票的,~划重点~包括夏令营),入住后当然是紧张的准备英语面试等等内容了,当天我是排在了下午面试,感觉还很好,上午可以多睡一会,最好能够去踩踩点上午,然后下午面试一定要早去,说是一点开始,但是老师十二点半就开始让学生进去了,有一个同学排在第二个,但是当时叫到他时还不到一点,没到,最后据...

LifeMaker的博客 4892

保姆级教程:在RK3588开发板上用MPP库实现H.264硬编码(附完整代码)

本文详细介绍了在RK3588开发板上使用MPP库实现H.264硬编码的全流程,包括环境准备、MPP库编译、编码器初始化与配置、数据输入与编码流程以及高级性能优化技巧。通过实战案例和完整代码,帮助开发者充分利用RK3588的VPU硬件加速能力,提升视频编码效率和质量。

weixin_28716769的博客 414

Android开发调用本地新浪微博客户端进行授权、发微博

移动应用SSO授权: 接入新浪微博的第三方Android、iOS应用可通过新浪微博官方客户端快速完成OAuth2.0授权。 http://open.weibo.com/wiki/%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8SSO%E6%8E%88%E6%9D%83 下载并导入新浪微博官方SDK。 Android平台:https://github.com/mo

壹口尘埃 2802

Modbus TCP 通信(C#)

【代码】Modbus TCP 通信(C#)

weixin_56229359的博客 1150

java为什么点登录没反应,3.0 单点登录出现java.lang.IllegalAccessError问题,但是用demo就不会。...

02-03 11:41:31.498: E/AndroidRuntime(5686): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation02-03 11:41:31.498: E/AndroidRuntime(5686): at com.si...

weixin_36125599的博客 350

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1194

uniapp 基于单选框多选框实现上拉触底多选/单选、回显

showPickerCheckbox弹层显示 label和value 类似下拉框的label和value一个意思 键和值。结果:可以传接口(接口只能post请求) 可以搜索 下面是结果图片展示 单选多选都可以。fieldValue回显传的值 传的是字符串 数组的话[1,2]转为1,2格式传入。mode是控制的单选还是多选 true为多选默认值 其余参数 单选多选一样。fieldName字段名 确定后会返回该字段名 根据字段名找对应的传入值。问题:在uniapp上 实现分页多选的操作。下面是组件的完整代码。

2301_76607997的博客 2936

关于新浪微博开放平台微博登录授权后再次登录会自动登录问题的解决办法

ios和android版本sso登陆和Oauth2.0登录跳转到新浪登录页面后,如果客户端里只有一个帐号,那么就会默认地选择这个帐号授权了,没给用户选择,也无法添加帐号。这种情况只能先去新浪的客户端里添加一个帐号再[已屏蔽]应用里授权,不科学。android端:对于Oauth2.0登录,在退出时执行end_session并清除cookie CookieSyncManager.createInst

极客公园 3508

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1288

友盟第三方登录 QQ 微信 新浪微博 自定义友盟的dirlog

上一篇 算是详细的说了友盟第三方分享,这里就说下第三方登录的这个功能。   我们看友盟官网的社会化分享API中 分享和登录是在一起的,就是在同一个jar里。所以我们集成了分享,登录的配置差不多了,官网有对应的配置,我写的分享中的清单文件就已经包含了登录需要的配置,大家可以直接去对比一下就可以了。 在这里我声明一下 我在这个项目里没有加入腾讯和新浪微博的SSO授权 所以会导致每次都要去页面授权的

trues的博客 1653

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android实现新浪微博SSO授权登录分享文字图片等功能

新浪开发平台:http://open.weibo.com 新浪微博分享目前分为两种途径: 1,直接在自己的APP,弹出类似Dialog(sina集成)来完成授权,授权成功后可直接分享内容,全程都是在自己APP里完成分享。老版本的微博SDK中集成了弹出分享Dialog(WebView)的视图,以及插入文字、图片、URL等API,直接调用接口中的update就可以分

zyxNobita专栏 1396

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

新浪微博OAUTH2.0授权验证(基于SSO客户端验证)

1.新浪微博开放平台注册应用 微博开放平台的网址为:http://open.weibo.com/apps 应用注册成功之后要填写应用的相关信息 主要有:应用的包名和签名 包名就是eclipse下的包: 至于签名:下载微博MD5签名工具http://vdisk.weibo.com/s/z8QF4HirmcYfJ 手机安装打开,如图 输入包名后获取32位的MD5签名 应用信

u010883062的专栏 21万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

新浪微博SSO登录方式及OAUTH2.0认证和获取我的微博

今天弄了下新浪微博SSO登录方式及OAUTH2.0认证和获取我的微博,实现的效果如下图: //========================================================================================================================== 就这么简单的界面,简单的请求json,我居然弄了

chenfuduo_loveit的专栏 4301

Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程

Android平台下Facebook,Google service, 新浪微博接入第三方应用SSO授权教程                                                                                                                         -- geolo(http://blog.csdn

GEOLO的专栏 8021

android app调用新浪微博,授权、分享

通过SSO方式授权,分享。 我的一个app要用到微博的授权和分享功能。简单就是根据用户输入的文本生成一个二维码,然后把该二维码分享到微博上,已经放到github上,请大家指教,欢迎fork哦。 https://github.com/ihyperwin/QRCodeGenius   首先放上新浪微博开发平台的github Demo地址   https://github.com/sina...

yingrenzhe68的专栏 944
上一篇: Android中通过Java获取Webview加载内容
下一篇: JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
hap_gx
博客等级 码龄14年 6粉丝 23原创
评论 26
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值