Android QQ、微信、Facebook和推特第三方登录

        在Android 很多的APP应用中,都需要利用第三方登录来实现APP 自己本身应用的快速登录。这里的第三方平台,一般是已经有大量用户的平台,比如说国内的QQ,微信,国外的Facebook和Twitter 等,而本篇博客主要实现了这四个平台的登录。

QQ登录

        首先进入 腾讯开放平台,登录后可以根据自己的需要注册个人或者公司的开发者账号,然后创建一个Android应用,获取应用的APPID。因为我本人很久之前就注册了开发者账号,不知道现在重新注册后会跳转到哪一个界面,所以已注册的开发者可以直接点击这,进入应用创建界面。创建应用成功后,能够得到应用的APP ID 和 APP KEY,第三方登录会用到这个信息。点击链接下载最新的SDK.jar,也可以在下面的项目中拿到已经下载好的jar 包。成功引用jar后,开始代码的实现。
首先实现一个监听:

public class BaseUiListener implements IUiListener {@Overridepublic void onCancel() {// TODO Auto-generated method stub}@Overridepublic void onComplete(Object arg0) {doComplete((JSONObject)arg0);}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError arg0) {// TODO Auto-generated method stu}}

        然后在登录界面实现:

//应用需要获得哪些接口的权限,由“,”分隔  所有权限用“all”
String Scope = "get_user_info,add_t,qrcode";
// 启动QQ登录SDK
mTencent = Tencent.createInstance(QQAppID, getApplicationContext());
// 启动QQ登录SDK
listener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {Toast.makeText(MainActivity.this, "QQ 登录成功-----" + values, Toast.LENGTH_SHORT).show();}
};
// 执行登录方法
mTencent.login(MainActivity.this, Scope, listener);//应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
if (requestCode == Constants.REQUEST_LOGIN) {Tencent.onActivityResultData(requestCode, resultCode, data, listener);
}

        最后还要在AndroidManifest.xml中增加配置的节点下增加以下配置(注:不配置将会导致无法调用API)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><application><activity
       android:name="com.tencent.tauth.AuthActivity"android:noHistory="true"android:launchMode="singleTask" ><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="tencent你的AppId" /></intent-filter></activity>
<activity
       android:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<application>

微信登录

        首先进入微信开发平台,登录后可以根据自己的需要注册个人或者公司的开发者账号,然后创建一个Android应用。填写完毕后,点击 提交审核,提交审核成功,7天内微信会给出审核结果。审核通过后,应用的APPID和APPKey就可以使用了。审核通过后在管理中心的移动应用列表点击查看,拿到应用的AppID和AppSecret。因为微信SDK改成通过Gradle的方式发布到jcenter,所以在Android Studio 中的build.gradle文件中,添加远程依赖实现SDK 库的加载。

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

        在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类。

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {private static final String TAG = "WXEntryActivity";private String wechatAppID = "wxd38bb2e01fee8e55";private String wechatAppSecret = "wxd38bb2e01fee8e55";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);IWXAPI api = WXAPIFactory.createWXAPI(this, wechatAppID, true);api.handleIntent(getIntent(), this);}@Overridepublic void onReq(BaseReq req) {Log.i(TAG, "onReq...");}@Overridepublic void onResp(BaseResp resp) {Log.i(TAG, "onResp: " + resp);String code = null;switch (resp.errCode) {case BaseResp.ErrCode.ERR_OK:// 用户同意,只有这种情况的时候code是有效的code = ((SendAuth.Resp) resp).code;Log.i("Apptest", code);try {requesUserInfo(code);} catch (Exception e) {e.printStackTrace();}break;case BaseResp.ErrCode.ERR_AUTH_DENIED:// 用户拒绝授权Log.i("Apptest", "用户拒绝授权");break;case BaseResp.ErrCode.ERR_USER_CANCEL:// 用户取消Log.i("Apptest", "用户取消");break;default:// 发送返回break;}finish();}public void requesUserInfo(final String code) {final String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wechatAppID+ "&secret=" + wechatAppSecret + "&code=" + code+ "&grant_type=authorization_code";final android.os.Handler handler = new android.os.Handler() {public void handleMessage(Message msg) {super.handleMessage(msg);Bundle b = msg.getData();String newsTemp = b.getString("msg");Toast.makeText(WXEntryActivity.this, "微信登录成功-----" + newsTemp, Toast.LENGTH_SHORT).show();}};new Thread(new Runnable() {@Overridepublic void run() {BufferedReader br = null;try {URL url = new URL(path);HttpURLConnection httpconn = (HttpURLConnection) url.openConnection();httpconn.setRequestProperty("accept", "*/*");httpconn.setDoInput(true);httpconn.setDoOutput(true);httpconn.setConnectTimeout(5000);httpconn.connect();int stat = 200;String msg = "";if (stat == 200) {br = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));msg = br.readLine();Bundle b = new Bundle();b.putString("msg", msg);Message m = new Message();m.setData(b);handler.sendMessage(m);} else {msg = "请求失败";Log.i(TAG, msg);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (br != null) {try {br.close();} catch (IOException e) {e.printStackTrace();}}}}}).start();}}

        并在manifest文件里面加上exported属性,设置为true,并且添加权限支持

<uses-permission android:name="android.permission.INTERNET"/><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.WRITE_EXTERNAL_STORAGE"/>...<activityandroid:name=".wxapi.WXEntryActivity"android:exported="true"android:label="@string/app_name" />

        然后在登录界面实现:

// 获取IWXAPI 实例
mIwxapi = WXAPIFactory.createWXAPI(MainActivity.this, wechatAppID, false);
// 将应用的APPID 注册到微信
mIwxapi.registerApp(wechatAppID);
// 发送登录请求
SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_test";
mIwxapi.sendReq(req);

FaceBook 登录

        因为大陆不能访问外国网站的原因,所以Facebook 的登录需要翻墙,这里默认大家都能成功翻墙,点击进入Facebook for developers,注册一个Facebook开发者账号。然后点击我的应用,选择添加新应用。在应用控制界面点击产品模块,添加Facebook 登录模块,点击快速启动创建Android应用。在创建的过程中,根据教程实现第三方登录,当第六步编辑完资源和清单文件后,执行下面的操作:

// 要获取的信息
List<String> permissions = Arrays.asList("email", "user_likes","user_status", "user_photos", "user_birthday", "public_profile", "user_friends");
// 创建 callbackManager,以便处理登录响应
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() {@Overridepublic void onSuccess(LoginResult loginResult) {Toast.makeText(MainActivity.this, "Facebook 登录成功-----" + loginResult.getAccessToken().toString(), Toast.LENGTH_SHORT).show();}@Overridepublic void onCancel() {// App code}@Overridepublic void onError(FacebookException exception) {// App code}
});//最后通过 callbackManager 将登录结果传递至 LoginManager。@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 64206) {callbackManager.onActivityResult(requestCode, resultCode, data);}
}

Twitter 登录

        因为大陆不能访问外国网站的原因,所以Twitter 的登录也需要翻墙,这里默认大家都能成功翻墙,点击进入Twitter移动开发,注册一个Twitter开发者账号,Twitter 开发者这里是需要审核的。审核通过后创建一个应用,拿到应用的TWITTER_KEY 和 TWITTER_SECRET。

 // 初始化TwitterTwitterConfig config = new TwitterConfig.Builder(MainActivity.this).logger(new DefaultLogger(Log.DEBUG)).twitterAuthConfig(new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET)).debug(true).build();
Twitter.initialize(config);
// 获取twitter 的客户端
twitterAuthClient = new TwitterAuthClient();twitterAuthClient.authorize(MainActivity.this, new Callback<TwitterSession>() {@Overridepublic void success(Result<TwitterSession> result) {TwitterAuthToken authToken = result.data.getAuthToken();Toast.makeText(MainActivity.this, "Twitter 登录成功-----" + authToken, Toast.LENGTH_SHORT).show();}@Overridepublic void failure(TwitterException exception) {}
});//最后通过 twitterAuthClient 将登录结果返回。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == TwitterAuthConfig.DEFAULT_AUTH_REQUEST_CODE) {twitterAuthClient.onActivityResult(requestCode, resultCode, data);}
}

        以上就是四个第三方平台第三方登录过程,具体的实现代码已提交到GitHub,点击查看Android QQ,微信,Facebook和推特第三方登录,欢迎fark,star。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把 ChatGPT 加到你自己的程序里,简单到只需要一样东西

那就是&#xff1a; 钱 零基础python入门教程&#xff1a;python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室。 这两天 ChatGPT 疯狂刷屏&#xff0c;可能有人都看烦了。也有很多人会有个疑问&#xff0c;这东西跟我有啥关系呢&#xff1f;我甚至连注册都注册不了啊……

ChatGPT 有什么功能?AI技术的发展在国内有啥体现?

最近&#xff0c;ChatGPT逐渐被大家所关注到&#xff0c;其实在去年年底ChatGPT 这个AI聊天机器人问世之后&#xff0c;在国外已经非常火爆。近日&#xff0c;很多小伙伴儿玩儿 ChatGPT 不亦乐乎&#xff0c;无法自拔....,感觉各行各业可能要发生大变化。 1&#xff1a;什么是C…

ChatGPT应用技巧五:如何实现一个垂直领域的AI问答机器人

原文&#xff1a;ChatGPT应用技巧五&#xff1a;如何实现一个垂直领域的AI问答机器人|向量|ai|知识库|上下文|插件功能_网易订阅 “由于ChatGPT的数据更新目前只截止到2021年9月&#xff0c;并且它也不一定有特定垂直领域的数据。如何将这些领域的最新数据“喂”给ChatGPT&…

ChatGPT:开放AI平台的最新进展和功能

第一章&#xff1a;引言 在过去的几年中&#xff0c;人工智能技术取得了长足的发展&#xff0c;其在各个领域的应用也日益广泛。而在AI技术中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是备受关注的领域之一。ChatGPT作为OpenAI的开放AI平台上的一项重要技术&am…

对话 ChatGPT:现象级 AI 应用,将如何阐释「研发效能管理」?

ChatGPT 已然是 2023 开年至今&#xff0c;互联网上最热的话题没有之一。从去年的 AI 图片生成&#xff0c;到 ChatGPT&#xff0c;再到现在各种基于大模型的应用如雨后春笋般出现……在人们探讨技术无限可能的同时&#xff0c;另一个更深刻的命题也不可回避地浮现出来&#xf…

朋友圈转发集赞截图生成工具,以假乱真!

今天分享的是2款转发集赞截图生成工具。 我自己是做平台运营的&#xff0c;平时转发、集赞、拼团、秒杀等等乱七八糟活动没少策划过。 但其实对我个人来说还是很讨厌这些东西的&#xff0c;天天求点赞/求转发/求砍一刀&#xff0c;实在是烦人&#xff0c;所以我自己从来都不参与…

mail发邮件

目录 一&#xff1a;导包 二&#xff1a;使用 1&#xff1a;在qq邮箱生成授权码&#xff1a;允许此qq可以被我们的电脑指挥发邮件 2&#xff1a;application.properties进行配置&#xff08;并把授权码放到spring.mail.passwordkytxteybnhhldiie&#xff09; 3&#xff1a;…

chatgpt赋能python:Python如何群发邮件:简介

Python如何群发邮件&#xff1a;简介 Python是一种功能强大的编程语言&#xff0c;它能够在多个方面为您提供帮助。其中之一是自动化邮件和批量邮件发送。如果您需要发送数百封邮件&#xff0c;或者每天都需要发送类似的邮件&#xff0c;使用Python进行自动化发送可能是最好的…

【编程实践】Google Guava 极简教程

前言 Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库&#xff0c;我们希望通过此文档为 Guava 中最流行和最强大的功能&#xff0c;提供更具可读性和解释性的说明。 适用人群 本教程是基础教程&#xff0c;适合基础Java开发者的进阶学习。 Adding Guava to your…

美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)

&#x1f496;&#x1f496;>>>加勒比海带&#xff0c;QQ2479200884<<<&#x1f496;&#x1f496; &#x1f340;&#x1f340;>>>【YOLO魔法搭配&论文投稿咨询】<<<&#x1f340;&#x1f340; ✨✨>>>学习交流 | 温澜潮…

微博评论内容的Chatgpt 话题聚焦和情感分析 情感分析LDA主题可视化多元线性回归

为了分析热点话题背后演化的逻辑&#xff0c;本项目选取了掀起大范围讨论的OpenAI发布的语言训练模型“ChatGPT”作为研究对象。通过对微博、豆瓣、知乎等社交平台进行考察分析&#xff0c;微博以活跃用户多、讨论热度高、公众关注度广等特点成为了本小组的第一首选。因此我们决…

一个可乐瓶自制捕蟑螂神器

http://www.sohu.com/a/76621652_391472 把矿泉水瓶上端剪掉&#xff0c;边缘要平滑 然后准备一些蟑螂爱吃的食物作为诱饵&#xff0c;放进瓶子里。 把盖子拧开倒扣在瓶子里&#xff0c;瓶口要保持在正中间&#xff0c;用胶带固定&#xff0c;防止滑动。 这里我选择用竹签来固定…

如何与蟑螂为敌

版本&#xff1a;1 一&#xff0c;蟑螂以什么为食 三个月不吃、不喝可以生存 六个月不吃可以生存 二&#xff0c;蟑螂喜欢生活在什么环境 湿热的环境 食物垃圾环境 有食物鱼、虾味的环境 如果杀过或整理过新鲜的鱼&#xff0c;晚上它必到 如果杀过新鲜的虾和扔过吃过的虾…

iOS开发者如何成功的战胜北蟑螂

这一次又搬到了有蟑螂的自如。 综合之前的经验&#xff1a;蟑螂针剂&#xff0c;网上的各种自制剂都是没用的。 蟑螂屋作用有限。 网上都说蟑螂不能踩死&#xff0c;其实踩死拍死后可以再喷杀虫剂即可。 蟑螂粘板是最管用了。 如果是小桌子&#xff0c;每个腿下面放一张&…

你永远穷不过一个广东人

“ 导读&#xff1a;「一线城市不太温暖&#xff0c;但广州一定是个例外。」 ” 在中国的南方&#xff0c;生活着这样一种生物。 他们不是羊&#xff0c;却成天咩咩叫。 一会儿说自己母鸡&#xff0c;一会儿又说别人雷猴。 热爱数数&#xff0c;尤其喜欢问有几只蚊子。 同样是…

矿泉水瓶除蟑螂

试过网上说的放肥皂水和樟脑丸&#xff0c;用它们的味道驱赶蟑螂&#xff0c;几乎没有效果&#xff0c;蟑螂还是在家里。肥皂水还会把喝水的蟑螂毒死&#xff0c;飘在上面&#xff0c;感觉好恐怖啊~~ 还是这个矿泉水瓶管用!每天下班把蟑螂拿出去倒就可以了&#xff0c;既安全又…

自带谷歌“血缘”,越超Oracle,“蟑螂”成为分布式数据库新标杆?

《中智观察》第1581篇推送 作者&#xff1a;赵满满 编辑&#xff1a;小瑞瑞 头图来源&#xff1a;摄图网 Heroic labs是一家为游戏等用户提供分布式服务器架构的企业&#xff0c;满足游戏公司全球上百万用户24小时实时多人对抗游戏服务的需求。其中一项业务就是为客户从本地开发…

【生活中的逻辑谬误】稻草人谬误和无力反驳不算证明

目录 1 稻草人谬误 The Straw Man Fallacy 2 无力反驳不算证明 The Inability to Disprove Does Not Prove 【引】 在生活中避免犯逻辑谬误&#xff0c;就可以在计算相关的工作中更好地运用逻辑思维&#xff0c;目前介绍了 【生活中的逻辑谬误】对人不对事和两难陷阱_苹果二…

蟑螂随机走动问题(数据结构图问题)

一、问题概要 1.1 题 目&#xff1a; 《随机走动》 1.2 初始条件&#xff1a; 一只贪杯的蟑螂醺醺然在室内地面游荡。地面铺满方砖&#xff0c;共计m*n块&#xff0c;构成大面积矩阵。蟑螂在方砖间随机爬行&#xff0c;可能想撞大运&#xff0c;找片阿司匹林解酒。假定蟑螂从…