Android快速SDK(23)第三方授权登录库ThirdLogin【肌肉记忆,分钟接入】

本文主要是介绍Android快速SDK(23)第三方授权登录库ThirdLogin【肌肉记忆,分钟接入】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码:http://download.csdn.net/detail/huangbin95487710/9260831

依赖包模式

完整运行还需要用到以下依赖包

  • Android快速SDK(2)View库QuickView


  • 淘宝授权登录SDK
基于各授权登录SDK再次封装

  1. 授权登录支持
    • QQ登录
    • 微信登录
    • 淘宝登录
    • 新浪微博登录
  2. 新特性配置支持
    • 配置或设置各种授权登录
    • 配置各登录需要的KEY
    • 属性
    •   <declare-styleable name="ThirdLogin"><!-- QQ APPID --><attr name="third_qq_appid" format="string" /><!-- QQ SCOPE --><attr name="third_qq_scope" format="string" /><!-- 微信  APPID --><attr name="third_weixin_appid" format="string" /><!-- 微信 SECRET --><attr name="third_weixin_secret" format="string" /><!-- 微信 SCOPE --><attr name="third_weixin_scope" format="string" /><!-- 微博  APPID --><attr name="third_sina_appid" format="string" /><!-- 微博 URL --><attr name="third_sina_url" format="string" /><!-- 微博 SCOPE --><attr name="third_sina_scope" format="string" /><!-- QQ 显示 --><attr name="qq_show" format="boolean" /><!-- 微信 显示 --><attr name="weixin_show" format="boolean" /><!-- 微博 显示 --><attr name="sina_show" format="boolean" /><!-- 淘宝 显示 --><attr name="alipay_show" format="boolean" /><!-- 获取用户资料 --><attr name="is_getuseinfo" format="boolean" /><!-- 返回按键 --><attr name="keycode_back" format="boolean" /></declare-styleable>

    • 默认样式
    •     <!-- 自定义登录样式 --><style name="DivThirdLogin"><item name="third_qq_appid">@string/thirdlogin_qq_appid</item><item name="third_qq_scope">@string/thirdlogin_qq_scope</item><item name="third_weixin_appid">@string/thirdlogin_weixin_appid</item><item name="third_weixin_secret">@string/thirdlogin_weixin_secret</item><item name="third_weixin_scope">@string/thirdlogin_weixin_scope</item><item name="third_sina_appid">@string/thirdlogin_sina_appid</item><item name="third_sina_url">@string/thirdlogin_sina_url</item><item name="third_sina_scope">@string/thirdlogin_sina_scope</item><item name="qq_show">true</item><item name="weixin_show">true</item><item name="sina_show">true</item><item name="alipay_show">true</item><item name="is_getuseinfo">true</item><item name="keycode_back">true</item></style>

  3. AndroidManifest.xml添加配置
    •     <applicationandroid:allowBackup="true"android:theme="@android:style/Theme.NoTitleBar" ><!-- ###################第三方登录################### --><activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="true" ><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="tencent801291865" /><!-- 100380359 100381104 801291865 --></intent-filter></activity><!-- ###################第三方登录################### --><!-- ###################淘宝登录################### --><activityandroid:name="app.general.lib.TaoBaoActivity"android:configChanges="orientation|keyboardHidden|navigation"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activity android:name="com.alibaba.sdk.android.webview.BaseWebViewActivity" /><activity android:name="com.alibaba.sdk.android.login.ui.LoginWebViewActivity" /><activityandroid:name="com.alibaba.sdk.android.login.ui.QrLoginActivity"android:theme="@style/tae_sdk_login_qr_activity_style" /><!-- ###################淘宝登录################### --></application><!-- ###################第三方登录权限################### --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- ###################第三方登录权限################### --><!-- ###################淘宝登录权限################### --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.CAMERA" /><!-- ###################淘宝登录权限################### -->

  4. 添加混淆,详见依赖包proguard.cfg
  5. 复制以下的XML文件到目标项目,在保持ID不变下,可任意更改界面
    • thirdlogin.xml
    • thirdlogin_frame.xml
  6. 代码示例
    • 布局
    • <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/ll"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:padding="15dip" ><ScrollViewandroid:id="@+id/scrollView1"android:layout_width="match_parent"android:layout_height="wrap_content" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dip"android:text="第三方登录(默认)" /><Buttonandroid:id="@+id/button2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dip"android:text="自定义样式" /><Buttonandroid:id="@+id/button3"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dip"android:text="自定义布局" /><Buttonandroid:id="@+id/button4"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dip"android:text="对话框样式" /><Buttonandroid:id="@+id/button5"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="15dip"android:text="注销账号" /><includeandroid:layout_width="fill_parent"android:layout_height="wrap_content"layout="@layout/thirdlogin" ></include></LinearLayout></ScrollView></LinearLayout>

    • 自定义样式
    • <?xml version="1.0" encoding="utf-8"?>
      <resources><!-- 重写样式 --><style name="MyDivThirdLogin1" parent="@style/DivThirdLogin"><item name="weixin_show">false</item></style></resources>

    • 代码
    • package cn.whonow.whonow.third;import General.System.MyLog;
      import General.ThirdLogin.Third;
      import General.ThirdLogin.ThirdBase;
      import General.ThirdLogin.ThirdListener;
      import General.ThirdLogin.Sina.Data.AccessTokenKeeper;
      import android.app.Activity;
      import android.content.Intent;
      import android.os.Bundle;
      import android.view.View;
      import android.view.View.OnClickListener;
      import android.widget.Button;
      import cn.whonow.whonow.R;/*** 第三方登录测试* @必须实现ThirdListener接口* @author HuangYi QQ:95487710*/
      public class ThirdLoginActivity extends Activity implements ThirdListener {private Third mThird;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_thirdlogin);Button button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubThird mThird = new Third(ThirdLoginActivity.this, R.id.ll,ThirdLoginActivity.this);mThird.popupLogin();}});Button button2 = (Button) findViewById(R.id.button2);button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubThird mThird = new Third(ThirdLoginActivity.this, R.id.ll,R.style.MyDivThirdLogin1, ThirdLoginActivity.this);mThird.popupLogin();}});Button button3 = (Button) findViewById(R.id.button3);button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubThird mThird = new Third(ThirdLoginActivity.this, R.id.ll,R.layout.test_thirdlogin_frame, R.style.DivThirdLogin,ThirdLoginActivity.this);mThird.popupLogin();}});Button button4 = (Button) findViewById(R.id.button4);button4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubThird mThird = new Third(ThirdLoginActivity.this, -1,R.style.MyDivThirdLogin1, ThirdLoginActivity.this);mThird.popupLogin();}});Button button5 = (Button) findViewById(R.id.button5);button5.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 注销账号Third.doLogout(ThirdLoginActivity.this);AccessTokenKeeper.clear(ThirdLoginActivity.this);mThird.onLoginSina();}});mThird = new Third(this);mThird.setThirdListener(this);mThird.initLogin();}@Overridepublic void onSucess(ThirdBase mThirdBase) {// TODO Auto-generated method stubMyLog.show(this, "登录方式:" + mThirdBase.mThirdType + "\n\r"+ mThirdBase.mNickName);}@Overridepublic void onError(String mError) {// TODO Auto-generated method stubMyLog.show(this, "错误信息:" + mError);}@Overridepublic void onCancel() {// TODO Auto-generated method stub}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (mThird != null) {mThird.onActivityResult(requestCode, resultCode, data);}}@Overridepublic void onDestroy() {super.onDestroy();if (mThird != null) {mThird.onDestroy();}}@Overridepublic void onResume() {super.onResume();if (mThird != null) {mThird.onResume();}}@Overridepublic void onPause() {super.onPause();if (mThird != null) {mThird.onPause();}}}


  7. 效果图


这篇关于Android快速SDK(23)第三方授权登录库ThirdLogin【肌肉记忆,分钟接入】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/196583

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存