Android实现微信登录的示例代码
作者:hequnwang10 发布时间:2022-04-04 15:55:56
标签:Android,微信,登录
微信登录的实现与qq登录类似。不过微信登录比较麻烦,需要拿到开发者资质认证,花300块钱,然后应用的话还得有官网之类的,就是比较繁琐的前期准备工作,如果在公司里,这些应该都不是事,会有相关人提前准备好。在这里我们已经拿到了开发者认证,并且申请到了微信登录的授权。
现在直接介绍mob来实现微信登录的代码,并获取微信的相关数据,比较简单。
一、布局界面
布局界面只需要一个button来触发授权就可以
<Button
android:id="@+id/wxlogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="微信登录" />
二、MainActivity.java
public class MainActivity extends Activity {
private Button wxlogin;
private Platform wx;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
wxlogin = (Button) login_view.findViewById(R.id.wxlogin);
wxlogin.setOnClickListener(new wxloginListener());
}
private class wxloginListener implements OnClickListener {
@Override
public void onClick(View arg0) {
wx = ShareSDK.getPlatform(Wechat.NAME);
System.out.println("微信是否已经授权1:"+wx.isAuthValid());
if(wx.isAuthValid()){
wx.removeAccount(true);
}
System.out.println("微信是否已经授权2:"+wx.isAuthValid());
wx.SSOSetting(false); // 设置false表示使用SSO授权方式
wx.authorize();
wx.showUser(null);
wx.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
System.out.println("wx登录测试hashMap"+hashMap);
System.out.println("wx登录测试hashMap"+hashMap.toString());
String unionid = (String) hashMap.get("unionid");
System.out.println("wx登录测试unionid"+unionid);
System.out.println("wx登录测试"+platform.getDb().toString());
String thirdLoginId = platform.getDb().getUserId();
System.out.println("wx登录测试thirdLoginId:"+thirdLoginId);
String userName = platform.getDb().getUserName();
System.out.println("wx登录测试userName:"+ userName);
String image = platform.getDb().getUserIcon();
System.out.println("wx登录测试image:"+image);
String sex = qq.getDb().getUserGender();
System.out.println("wx登录测试sex:"+sex);
System.out.println("wx登录测试:"+"成功了");
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
}
@Override
public void onCancel(Platform platform, int i) {
}
});
wx.removeAccount(true);
System.out.println("微信是否已经授权3:"+wx.isAuthValid());
}
}
}
这是官方提供的接口,
plat. authorize():要功能不要数据 单独授权(只获取授权信息,不获取用户信息)plat. showUser(null):要数据无需功能à授权并获取信息(除了授权信息,其他用户信息可以在oncomplete中的hashmap中获取)
这样就拿到的微信的授权,并且获得数据,然后将数据向数据库中存储,就可以做微信登录了。
总体流程来说还是比较简单,直接调用接口就行,就是前期的审核准备工作比较麻烦。
来源:https://blog.csdn.net/hequnwang10/article/details/119464076


猜你喜欢
- 代码优化细节 1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用fin
- 前言最近跟着视频在做一个分布式项目练练手,然后那个老师就说了下freemakker生成静态页面后,然后讲了下思路:添加商品时生成对应的商品静
- 前言本文主要给大家介绍了关于C/C++混合编程extern “C”使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介
- private void Value_ByteArray(){double doublevalue = 258.0;Int32 intval
- 一、实验目的1. 掌握面向对象的编程思想、类与对象;2. 掌握类的封装性、继承性和多态性的作用;3. 掌握成员变量和成员方法的特性、构造方法
- 本文实例讲述了Java定义泛型方法。分享给大家供大家参考,具体如下:一 点睛1 如果定义类、接口是没有使用类型形参,但定义方法时想自己定义类
- 本文实例为大家分享了Java实现五子棋的具体代码,供大家参考,具体内容如下任务概述:五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策
- 开发过程中经常用到加载圈,特别是车机开发由于外设不同很多操作响应的等待时长经常要用到不同的加载圈。首先,直接上菊花效果图,这是我直接从项目里
- 大家在银行交易某些业务时,都可以看到无论是身份证、银行账号中间部分都是用*号替换的,下面小编把代码整理如下:/// <summary&
- 本文介绍C#编程时,给定一个字符串,如何判断它是不是一个日期。本文将介绍两种方法,一个是判断字符串是否是时间,如果是就转换为一个时间变量,第
- 初步计划:或许由于个人原因,排球计分系统在假期就完成了,一直未写博客,就这样一直在推就是不想写,在加上过完年就工作了,可能刚实习工作比较紧所
- /* 系统名:SaleManage* 模块名:SortPags* 模块说明:排序分页类(传入DataTable,及相关信息,然后分页,并排序
- 在Android开发中,定时器一般有以下3种实现方法:一、采用Handler与线程的sleep(long)方法二、采用Handler的pos
- Java多线程下载网图案例此案例依赖——文件操作工具类(FileUtils)使用 apache 的commons-io包下的FileUtil
- 本文实例讲述了Android TextView跑马灯效果实现方法。分享给大家供大家参考,具体如下:public class MyTextVi
- 你平时是怎么读取文件的?使用流读取。是的没错,C#给我们提供了非常强大的类库(又一次吹捧了.NET一番),里面封装了几乎所有我们可以想到的和
- 本文实例为大家分享了android实现倒计时动态圈的具体代码,供大家参考,具体内容如下效果是这样,没动图:布局:<LinearLayo
- 最近在做一个“温湿度控制”的项目,项目要求通过用户设定的温湿度数值和实时采集到的数值进行比对分析,因为数据的对比与分析是一个通过前端页面控制
- 1、JDBCJDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开发那么一定是离不开 数据库 的,不管你搞的是什么,只要是想
- 俗话说,工欲善其事,必先利其器。要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境。测试公众