**

前言

**
三方登录在如今差不多已经成为每一款App必备的功能了。每次集成都会遇到各种各样的问题,今天总结一下三方登录的流程,以免忘记。现在好像还没有专门的三方登录SDK,ShareSDK和友盟的分享都有三方登录的功能,我选择的是ShareSDK。

效果图:

1、进去mob.com官网(http://www.mob.com/)注册用户,获取ShareSDK的AppKey

比较简单,就不再赘述了。实在不会可以参照(http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1),按照流程来即可。

2、下载SDK

下载地址:http://www.mob.com/downloadDetail/ShareSDK/android

这里只演示三方登录功能,所以只选择了三种常用的三方登录方式,如果还有其他平台的分享功能,可以一块选中。
下载后解压出来是这样的:

3、准备资源文件

点击ShareSDK for Android文件夹,进入之后如下,双击QuickIntegrater.jar。

只填写项目名称和项目包名,其他默认即可。

点击确认之后会在原文件夹加生成一个以你项目名命名的文件夹:

不出意外,打开该文件夹如下:

4,开始集成

(1)将对应的文件夹复制到工程相应的文件夹即可:
(注意:src文件夹从cn文件夹开始复制到java根目录下)

(2)在清单文件AndroidManifest.xml添加权限

<!-- 添加ShareSDK权限 --><uses-permission android:name="android.permission.GET_TASKS"/><uses-permission android: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.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/><uses-permission android:name="android.permission.GET_ACCOUNTS"/><uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 蓝牙分享所需的权限 --><uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><!-- 添加ShareSDK权限结束 -->

3,在清单文件AndroidManifest.xml添加activity信息
(注意:tencent后面的appid要保持和您配置的QQ的appid一致)

<application
        android:name="com.mob.MobApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><!-- ShareSDK的activity --><activity
            android:name="com.mob.tools.MobUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize"><!-- 调用新浪原生SDK,需要注册的回调activity --><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/><category android:name="android.intent.category.DEFAULT"/></intent-filter>!--集成line客户端登录授权,需要添如下格式的过滤器--><intent-filter><data android:scheme="line.1477692153"/><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.BROWSABLE"/><category android:name="android.intent.category.DEFAULT"/></intent-filter><!-- ShareSDK3.1.0版本之前才需要在MobUIShell下面注册此意图,3.1.0版本之后(包含3.1.0)不需要注册此intent --><intent-filter><data android:scheme="tencent100371282"/><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.BROWSABLE"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity><!-- QQ --><activity
            android:name="cn.sharesdk.tencent.qq.ReceiveActivity"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="tencent1106491342"/></intent-filter></activity><!-- 微信 --><activity
            android:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"/><!-- 填写您从Mob开发者后台中得到的Appkey和AppSecret --><meta-data
            android:name="Mob-AppKey"android:value="21c16aff1f428"/><meta-data
            android:name="Mob-AppSecret"android:value="4d5dbb5d71407bca66d8b6e9075bac73"/>
</application>

(2,3两步如果觉得我写的乱,可以直接去看官方的集成文档
官方文档传送门:http://wiki.mob.com/sdk-share-android-3-0-0/)
(4)替换各个平台申请的key
在assets文件夹下的ShareSDK.xml中替换各个平台申请的key

各开发平台地址:
微信:https://open.weixin.qq.com/
QQ :http://open.qq.com/
微博:http://open.weibo.com/

5、添加登录代码


import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;import com.mob.tools.utils.UIHandler;import java.util.HashMap;import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.wechat.friends.Wechat;import static android.R.attr.action;public class MainActivity extends AppCompatActivity implements View.OnClickListener, PlatformActionListener, Handler.Callback {private static final int MSG_ACTION_CCALLBACK = 0;private ImageView ivWxLogin;private ImageView ivQqLogin;private ImageView ivBlog;private ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initListener();initData();}private void initView() {ivWxLogin = (ImageView) findViewById(R.id.iv_wx_login);ivQqLogin = (ImageView) findViewById(R.id.iv_qq_login);ivBlog = (ImageView) findViewById(R.id.iv_blog);}private void initListener() {ivWxLogin.setOnClickListener(this);ivQqLogin.setOnClickListener(this);ivBlog.setOnClickListener(this);}private void initData() {}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.iv_wx_login:Platform wechat = ShareSDK.getPlatform(Wechat.NAME);wechat.setPlatformActionListener(this);wechat.SSOSetting(false);authorize(wechat, 1);break;case R.id.iv_qq_login:Platform qq = ShareSDK.getPlatform(QQ.NAME);qq.setPlatformActionListener(this);qq.SSOSetting(false);authorize(qq, 2);break;case R.id.iv_blog:Platform sina = ShareSDK.getPlatform(SinaWeibo.NAME);//关闭sso授权sina.SSOSetting(true);sina.setPlatformActionListener(this);sina.SSOSetting(false);authorize(sina, 3);break;}}private void authorize(Platform plat, int type) {switch (type) {case 1:showProgressDialog("正在打开微信,请稍后...");break;case 2:showProgressDialog("正在打开QQ,请稍后...");break;case 3:showProgressDialog("正在打开微博,请稍后...");break;}if (plat.isAuthValid()) {//如果授权,就删除授权资料plat.removeAccount(true);}plat.showUser(null);//授权并获取用户信息}//登录授权成功的回调@Overridepublic void onComplete(Platform platform, int i, HashMap<String, Object> res) {Message msg = new Message();msg.what = MSG_ACTION_CCALLBACK;msg.arg1 = 1;msg.arg2 = action;msg.obj = platform;UIHandler.sendMessage(msg, this);}//登录授权错误的回调@Overridepublic void onError(Platform platform, int i, Throwable throwable) {Message msg = new Message();msg.what = MSG_ACTION_CCALLBACK;msg.arg1 = 2;msg.arg2 = action;msg.obj = throwable;UIHandler.sendMessage(msg, this);}//登录授权取消的回调@Overridepublic void onCancel(Platform platform, int i) {Message msg = new Message();msg.what = MSG_ACTION_CCALLBACK;msg.arg1 = 3;msg.arg2 = action;msg.obj = platform;UIHandler.sendMessage(msg, this);}//显示dialogpublic void showProgressDialog(String message) {progressDialog = new ProgressDialog(this);progressDialog.setMessage(message);progressDialog.setCancelable(true);progressDialog.show();}//隐藏dialogpublic void hideProgressDialog() {if (progressDialog != null) {progressDialog.dismiss();}}//登陆发送的handle消息在这里处理@Overridepublic boolean handleMessage(Message message) {hideProgressDialog();switch (message.arg1) {case 1: {Toast.makeText(MainActivity.this, "授权登陆成功", Toast.LENGTH_SHORT).show();//获取用户资料Platform platform = (Platform) message.obj;String userId = platform.getDb().getUserId();//获取用户账号String userName = platform.getDb().getUserName();//获取用户名字String userIcon = platform.getDb().getUserIcon();//获取用户头像String userGender = platform.getDb().getUserGender(); //获取用户性别,m = 男, f = 女,如果微信没有设置性别,默认返回nullToast.makeText(MainActivity.this, "用户信息为--用户名:" + userName + "  性别:"+ userGender, Toast.LENGTH_SHORT).show();//下面就可以利用获取的用户信息登录自己的服务器或者做自己想做的事啦!//。。。startActivity(new Intent(this,LoginActivity.class));}break;case 2: {Toast.makeText(this, "授权登录失败", Toast.LENGTH_SHORT).show();}break;case 3: {Toast.makeText(this, "授权登录取消", Toast.LENGTH_SHORT).show();}break;}return false;}
}

activity_main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="horizontal"><LinearLayout
        android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"><ImageView
            android:id="@+id/iv_wx_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="10dp"android:clickable="true"android:src="@mipmap/wechat_icon"/><ImageView
            android:id="@+id/iv_qq_login"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="10dp"android:clickable="true"android:src="@mipmap/qq_icon"/><ImageView
            android:id="@+id/iv_blog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="10dp"android:clickable="true"android:src="@mipmap/blog_icon"/></LinearLayout>
</LinearLayout>

参考链接:http://www.jianshu.com/p/c104fa307c60,多谢wildma。

Android 集成ShareSDK实现三方登录相关推荐

  1. Android集成ShareSDK第三方分享和登录

    本篇记录在Android平台上如何集成ShareSDK实现第三方登陆和分享,以及其中可能会遇到的坑. Mob官网 下载 如图选择你需要分享的平台: 集成 解压下载的文件,然后在ShareSDK for ...

  2. Android Studio 集成淘宝三方登录

    满足下面条件1-- classpath 'com.android.tools.build:gradle:2.3.2' 版本不要高于3.02-- 通过阿里百川开通应用3-- 项目开通过电商能力4-- 项 ...

  3. Android 集成 ShareSdk 记录

    MobSdk 隐私协议: https://www.mob.com/wiki/detailed?wiki=share_hgzn&id=14 集成: https://www.mob.com/wik ...

  4. Android 集成google 和 facebook 登录

    最近公司项目刚好集成了google 和 facebook 登录,中间遇到了一些问题,所以记录下来. 主要问题如下: 1)如何集成google 和 facebook 登录,主要参考官方文档. 2)应用上 ...

  5. IOS项目集成ShareSDK实现第三方登录、分享、关注等功能

    快速集成 第一步:将下载的SDK解压后导入您的工程中,见下图(点击这里查看视频教程) 拖到工程中后弹出以下对话框,勾选"Copy items into destination group's ...

  6. Android开发实现QQ三方登录 标签: android开发qq三方登录

    本文分为两个部分:一是QQ的授权部分:二是获取用户的基本信息部分 一.授权部分 1.首先,先去腾讯开放平台获取APP ID和APP KEY(未注册腾讯开发者账号的可能需要先注册账号),获取的过程还是还 ...

  7. Android 集成友盟第三方登录分享

    首先导入model 导入这个model   . 这个 debug.keystore导入 密码:android build文件粘贴 没有啥粘啥就完了 android {compileSdkVersion ...

  8. Android集成友盟第三方登录

    button点击事件 if (v.getId()==R.id.login_QQ) {if(Build.VERSION.SDK_INT>=23){//QQ需要申请写入权限String[] mPer ...

  9. Android 三方登录 - QQ登录

    由于项目需要三方登录,所以根据官方文档和一些其他资料,完成了一个Demo,这里记录一下. (1)申请腾讯开发者账号 到腾讯开发这平台(http://open.qq.com/)注册账号,很简单的. (2 ...

最新文章

  1. python Pool常用函数用法总结
  2. 老大吩咐的可重入分布式锁,终于完美的实现了~
  3. 30亿美金投入!一文读懂英伟达性能凶残的Tesla V100牛在哪?
  4. 分割命令: split
  5. 神经网络 | 单层感知器从0到1(附Python源代码)
  6. [编程入门]猴子吃桃的问题
  7. python怎么创建变量_Python之变量的创建过程
  8. python爬虫之路scrapy
  9. 《数学之美》读书笔记和知识点总结(一)
  10. yum,yum指向,yum源创建
  11. C++ 获取URL图片、html文件,CInternetSession 【转】
  12. 软件测试简历上实战项目:开源项目部署--litemall商城
  13. 英文IT电子书下载:www.foxebook.net
  14. Blender导入unity——模型绑定骨骼后再导入unity,材质异常,法线翻转
  15. mysql怎么放入图片_怎么将图片添加到mysql中
  16. mysql group by 之后取每个分组最新的一条(或者按照自定义的规则排序)
  17. AppStore发布流程(从证书创建到app发布一站式)
  18. IR-CUT选择须知
  19. 网盘、云盘共享文件搜索引擎链接收藏目录
  20. java double 运算经度丢失问题解决

热门文章

  1. 安装 VMware tools时报错:不在 sudoers 文件中。此事将被报告。
  2. 了解AMD处理器的OPN编号
  3. 组队学习-动手学数据分析-第二章第2、3节
  4. sws_getContext函数详细使用
  5. 个人成长:简单写写《乔布斯传》读后感
  6. 背了单词再也不怕忘,多邻国的AI要逆天!
  7. 音频wav文件格式分析
  8. 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
  9. week3note函数
  10. 用计算机编程解魔方,4 分钟!OpenAI 的机器手学会单手解魔方了,完全自学无需编程...