微信登录集成_微信授权登录集成_程序猿强哥的博客-程序员宅基地

技术标签: 2020Android  

先到https://open.weixin.qq.com注册开发者账号

账号注册好后,新建一个Android应用

Android应用创建好后,就可以得到appId和appSecret

接下来就开始编写具体的代码。

先在AndroidManifest.xml中添加如下权限

<!--微信所需权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--微信所需权限-->

然后在app的build.gradle中添加微信登录所需的依赖

api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

接下来就将appId注册到微信里

// 将应用的appId注册到微信
        api.registerApp(APP_ID);

        //建议动态监听微信启动广播进行注册到微信
        context.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                // 将该app注册到微信
                api.registerApp(APP_ID);
            }
        }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));

注册到微信后,通过如下代码就可以拉起微信进行授权

  final SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";//申请授权区域,总共有四个
        req.state = "xiaoXinYuanLogin";
        api.sendReq(req);

接着在当前包名下再新建一个wxapi的包,注意wxapi是微信官方指定的名字,不可以乱写,在该包下创建一个WXEntryActivity,这个Activity的名字也是不要乱写,WXEntryActivity的配置如下

 <activity
            android:name=".wxapi.WXEntryActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="true"
            android:taskAffinity="com.xiaoxinyuan"
            android:launchMode="singleTask">
        </activity>

WXEntryActivity需要实现implements IWXAPIEventHandler,我们在该接口的回调方法中接收微信返回给客户端的数据

在WXEntryActivity的onCreate,和onNewIntent中,将IWXAPIEventHandler进行注册

wxUtil.api.handleIntent(intent, this);

接着在WXEntryActivity的onRes中可以得知授权结果,如下

授权成功后,就可以通过resp.code去获取access_token,因为想要获取用户的信息,就需要access_token,以下代码就是获取access_token

当access_token获取到后,就可以通过access_token去获取微信的用户信息了

由于上面有些代码我是经过封装的,因此大家可以去下载完整的项目看看。

https://download.csdn.net/download/u010632547/12229968

另外大家去测试时,需要将appId和appSecrey替换成你自己的,如下

特别注意:access_token和app_secrey微信官方建议不要直接写在应用里,如果access_token和app_secrey泄露会导致程序的数据安全问题,因此建议是配置在服务端。所以在实际的开发中,我们通常会请求自己的服务器,服务器会返回一个包装过后的access_token,然后你根据服务器的这个access_token,再去请求服务器指定的接口,间接的获取到微信用户的个人信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010632547/article/details/104676763

智能推荐

linux ssh连接交换机_华为交换机配置远程ssh登录操作步骤-程序员宅基地

华为交换机配置SSH登录首先说一下配置的基本步骤1、虚拟终端VTY设置2、SSH用户设置3、SSH服务器设置下面具体说一下1、虚拟终端VTY设置[huawei]user-interfacevty4[huawei-ui-vty4]authentication-modeaaa#用户认证方式为AAA[huawei-ui-vty4]protocolinboundssh#设置VTY只支持SSH协议..._linux远程登录华为交换机

div+css图片横向排列-程序员宅基地

css代码:ul,li{ padding:0; margin:0; overflow:hidden;}li{ list-style:none;}img{ border:0;}.box{ width:440px;}.box li{ float:left; width:100px; height:80px; margin-right:10px;}html代码:

悠醋机器人_阅读小说 第889章吃一个机器人的醋-倾倾一笑皆余生内容-我就去小说网...-程序员宅基地

进厨房门便闻到香菇味,一诺这会儿穿着小厨师服戴着一次杏手套正在捏面团。机器人小小诺在一边站着。大脑袋上的眼睛不停眨吧眨,给小主人加油打汽。“小主人好蚌呀!”“小主人加油!”“爱小主人!”一诺看到易倾倾,小脸蛋笑成花,“倾倾,早字,今天早上我们吃,香菇鷄肉水饺。”正是易倾倾最喜欢的口味。小小诺看到易倾倾,快速扫描她全身。紧接着,大眼睛变成红心,赞美的句子一句接一句。“女主人好美!”“女主人身材好正点...

php的websocket实时推送,php实现websocket实时消息推送-程序员宅基地

/*** Created by xwx* Date: 2017/10/18* Time: 14:33*/class SocketService{private $address = '0.0.0.0';private $port = 8083;private $_sockets;public function __construct($address = '', $port=''){if(!em..._php 发送websocket

java命令行引用jar包的方法-程序员宅基地

如果java 文件和jar 包在同一目录编译:D:\test> javac -cp xxxx.jar Test.java执行:D:\test> java -classpath xxx.jar;mmm.jar;Test如何java文件和jar包不在同一目录编译:D:\test> javac -cp d:\abc\xxx.jar Test.java执行:D:\test>...

在vs中开发QT时使能控制台输出的方法_qt控制台程序如何输入参数调试_苏克贝塔的博客-程序员宅基地

在vs中开发QT时使能控制台输出的方法用VS开发QT应用程序时出现需要看调试信息,我们第一想到的是qDebug(),但是如果是在release环境下,或者不能直接看到qDebug控制台的情况下,该怎么看到调试信息呢?我们想到系统标准输出,标准输入和标准错误,分别对应stdout, stdin, stderr。我们可以用fprintf(stderr," stderr test\n");fprintf(stdout," stderr test\n");方法一解决方法: 工程->属性->_qt控制台程序如何输入参数调试

随便推点

java简单的记事本程序_如何用JAVA编写简单的记事本程序?_理性教会的博客-程序员宅基地

展开全部import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.io.*;import java.awt.datatransfer.*;public class NewEdit{public static void main(String args[]..._java窗口简易记事本程序怎么写

php的json转换函数,PHP JSON互转函数性能介绍-程序员宅基地

PHP语言被业内人士评为性能强大的一款计算机语言,许多程序员都采用它来作为网站开发建设的基础语言。鉴于JSON的娇小性和通用性,PHP在5.2的版本之后,默认加上一组针对数据进行的PHP JSON互转函数:json_encode数据到JSONjson_decode JSON到PHP变量的转换这两个PHP JSON互转函数在使用Ajax诸如:jquery和Ext框架的时候显得尤为重要,Ext默认接受..._var par={}作用

2023最新高频Android面试题总结(附答案)-程序员宅基地

Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。应用场景:1. 逆向代码,例如反编译2. 与注解相结合的框架,如 Retrofit3. 单纯的反射机制应用框架,例如 EventBus(事件总线)4. 动态生成类框架 例如Gson。_android面试题

蓝桥杯题库训练---1003_蓝桥杯acm训练系统1003-程序员宅基地

题目链接:问题 1003: [编程入门]密码破译lis = list('China')result = ''.join(map(lambda x: chr(ord(x) + 4), lis))print(result)特别注释,因为在平常中操作acsii码的情况不多,所以这个方法我也是百度的ord("A") --> 65chr(65) --> A..._蓝桥杯acm训练系统1003

线性代数学习之对称矩阵与矩阵的SVD分解_对称矩阵的分解_webor2006的博客-程序员宅基地

完美的对称矩阵:定义:在上一次线性代数学习之特征值与特征向量 - cexo - 博客园学习了矩阵的特征值和特征向量相关的概念,这次则继续延展上一次的内容,这次则来学习对称矩阵,其标题上加了“完美”俩字,因为对于对称矩阵拥有非常好的性质,使得这次的学习主线就是对称矩阵,借助对称矩阵可以处理任何矩阵,把任何矩阵分解成希望的形式,也就是矩阵的SVD分解,下面就来看一下为啥对称矩阵是“完美”的。先来看一下对称矩阵的样子:而要注意这里说的对称是指:并不是看主对角一样就说是对称矩阵哟,再来看_对称矩阵的分解

CSS3定位-程序员宅基地

CSS3定位定位=定位模式+边偏移子绝父相相对定位移动位置参照原来位置不脱标,保留原来位置绝对定位如果没有祖先元素或祖先元素没有定位,则绝对定位盒子参考浏览器如果祖先有定位(相对、绝对、固定),则参考最近有定位的元素脱标固定定位以浏览器可视窗口为参照与父元素无关不随滚动条滚动固定定位不再占有原先位置粘性定位以浏览器可视窗口为参照(固定定位)粘性定位占有原先位置(相对定位)必须添加top/left/right/bottom至少一个才有效定位特殊特性