Android 微信第三方登录(个人笔记)

Android 微信登录详细流程 流程讲解: 第一步:先去微信平台注册账号,填写应用信息,提交审核,大概需要三到五天的时间审核完成; 第二步:审核完成微信开放平台会生成一个appid,和sercet 这两个是唯一的id 需要妥善保管; 第三步:按照微信开放平台给的文档,下载相应的sdk以及签名工具,在此强调 必须是用签名打包的正式版的apk才可以调起微信的客户端进行授权登录,必须保证应用的签名(用签名工具可以获取)和开放平台上填写的信息一致。 以上三步完成后我们就可以开始支付的编写了 1.添加依赖 compile 'com.tencen. 阅读详情

今天在写微信登录,花了半天时间搞定、然后写下自己的笔记,希望帮助更多的人。。。欢迎各位指教。

 

微信授权登录,官方说的不是很清楚、所以导致有一部分的坑。

微信注册应用平台的应用签名,下载 微信签名生成工具 输入项目的packageName也可以查看到。

(注意:debug、Release 一定要区分,因为2种生成的微信签名不一致,会导致没有跳转、回调。。。。一般在微信开发者上面注册的是正式环境打包好的、)

 

 

 

申请微信开发者账号、应用申请省略。。。。

 

 

1. AndroidManifest.xml 权限

复制代码
<!-- 微信权限-->
<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"/>
复制代码

 

 

2.在图一按钮上面,加上微信跳转方法、也就是启动微信登录的方法

复制代码
private void loginToWeiXin(){
        IWXAPI mApi = WXAPIFactory.createWXAPI(this, WXEntryActivity.WEIXIN_APP_ID, true);
        mApi.registerApp(WXEntryActivity.WEIXIN_APP_ID);

        if (mApi != null && mApi.isWXAppInstalled()) {
            SendAuth.Req req = new SendAuth.Req();
            req.scope = "snsapi_userinfo";
            req.state = "wechat_sdk_demo_test_neng";
            mApi.sendReq(req);
        } else
            Toast.makeText(this, "用户未安装微信", Toast.LENGTH_SHORT).show();
    }
复制代码

 

3.在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity

 package(项目报名).wxapi.WXEntryActivity.Java 

回调方法onResp() 方法没有触发回调、请监测WXEntryActivity onCreate中是否调用此方法  mApi.handleIntent(this.getIntent(), this);

复制代码
package com.xxx.xxxx.android.wxapi;
/**
 * 微信登录页面
 * @author kevin_chen 2016-12-10 下午19:03:45
 * @version v1.0
 */
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final String APP_SECRET = "填写自己的AppSecret";
    private IWXAPI mWeixinAPI;
    public static final String WEIXIN_APP_ID = "填写自己的APP_id";
    private static String uuid;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mWeixinAPI = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, true);
        mWeixinAPI.handleIntent(this.getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        mWeixinAPI.handleIntent(intent, this);//必须调用此句话
    }

    //微信发送的请求将回调到onReq方法
    @Override
    public void onReq(BaseReq req) {
        LogUtils.log("onReq");
    }

    //发送到微信请求的响应结果
    @Override
    public void onResp(BaseResp resp) {
        LogUtils.log("onResp");
        switch (resp.errCode) {
        case BaseResp.ErrCode.ERR_OK:
            LogUtils.log("ERR_OK");
            //发送成功
            SendAuth.Resp sendResp = (SendAuth.Resp) resp;
            if (sendResp != null) {
                String code = sendResp.code;
                getAccess_token(code);
            }
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL:
            LogUtils.log("ERR_USER_CANCEL");
            //发送取消
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED:
            LogUtils.log("ERR_AUTH_DENIED");
            //发送被拒绝
            break;
        default:
            //发送返回
            break;
        }

    }

    /**
     * 获取openid accessToken值用于后期操作
     * @param code 请求码
     */
    private void getAccess_token(final String code) {
        String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                + WEIXIN_APP_ID
                + "&secret="
                + APP_SECRET
                + "&code="
                + code
                + "&grant_type=authorization_code";
        LogUtils.log("getAccess_token:" + path);
        //网络请求,根据自己的请求方式
        VolleyRequest.get(this, path, "getAccess_token", false, null, new VolleyRequest.Callback() {
            @Override
            public void onSuccess(String result) {
                LogUtils.log("getAccess_token_result:" + result);
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(result);
                    String openid = jsonObject.getString("openid").toString().trim();
                    String access_token = jsonObject.getString("access_token").toString().trim();
                    getUserMesg(access_token, openid);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onError(String errorMessage) {

            }
        });
    }


    /**
     * 获取微信的个人信息
     * @param access_token
     * @param openid
     */
    private void getUserMesg(final String access_token, final String openid) {
        String path = "https://api.weixin.qq.com/sns/userinfo?access_token="
                + access_token
                + "&openid="
                + openid;
        LogUtils.log("getUserMesg:" + path);
        //网络请求,根据自己的请求方式
        VolleyRequest.get(this, path, "getAccess_token", false, null, new VolleyRequest.Callback() {
            @Override
            public void onSuccess(String result) {
                LogUtils.log("getUserMesg_result:" + result);
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(result);
                    String nickname = jsonObject.getString("nickname");
                    int sex = Integer.parseInt(jsonObject.get("sex").toString());
                    String headimgurl = jsonObject.getString("headimgurl");
                 
                    LogUtils.log("用户基本信息:");
                    LogUtils.log("nickname:" + nickname);
                    LogUtils.log("sex:" + sex);
                    LogUtils.log("headimgurl:" + headimgurl);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                finish();
            }

            @Override
            public void onError(String errorMessage) {

            }
        });
    }

}
复制代码

 

5.在 AndroidManifest.xml 设置注册微信的页面

当授权时候进入WXEntryActivity、当前背景可能是黒或白,为了不影响用户体验,可以把当前Activity设置为透明:

android:theme="@android:style/Theme.Translucent" 

复制代码
<!--注册微信回调 WXEntryActivity -->
<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:label="@string/app_name"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent" />
复制代码

 

 

 

 

具体可参考:微信授权登录取用户信息步骤

最新Android安卓项目实现微信扫码登录 刚做好简单的微信扫码登录功能分享 阅读详情

相关推荐

android 仿微信demo————登录功能实现(移动端)

文章目录移动端登录功能实现测试 移动端登录功能实现 登录功能基本和注册一样,唯一不同的是登录可以实现两种登录方式(微信号和手机号),也就是布局不一样。所以需要两个布局,两个activity(这个方法比较简单粗暴,也可以通过activity动态切换布局,这样只需要一个activity就可以了) 创建两个activity,实现两种登录方式 微信号登录activity Login_User.java package com.example.wxchatdemo; import android.annotatio

stormzhuo的博客 1万+

Android之微信接入分享,登录功能。

最近在做一个APP项目,需要用到微信分享啊,登录这些。

J.D.的博客 1万+

android集成第三方微信登录

项目需要用到第三方登录的微信数据,已调试好并集成到项目中,给大家分享一下。第一步:在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度。 应用创建完毕后会得到两个值:AppID、AppSecret,用这两个值来请求微信。 然后去微信开放平台的资源中心 ,选择安卓资源包 ,如图: 注意:输入的包名和签名要和项目中的一致!第二步:将安卓资源包中的libammsdk.j

Suma_的博客 1万+

Android集成微信登录

第三方通过code进行获取access_token的时候需要用到,code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。并在包中创建wxapi文件夹,在文件夹中创建WXEntryActivity页面,如果wxapi这个文件夹放的位置不对,将无法登录,微信sdk无法找到登录的Activity授权功能。需要注意的事关于应用签名这里,可以查看此博客进行获取"http://www.tangchaowang.com/kexuezhishi/3874.html"

qq_29087675的博客 3671

微信第三方登录Android实现

记录一下微信第三方实现登录的方法。还是比较简单。 一、必要的准备工作 1.首先需要注册并被审核通过的微信开放平台帐号,然后创建一个移动应用,也需要被审核; 2.然后到资源中心下载开发微信所需的工具; 下载的网址:点击打开链接,有一个是SDK,一个是签名生成工具还有一个范例代码。 3.将SDK文件夹lib下的jar文件libammsdk.jar导入到项目工程中; 4.你的测试手机需要装好

just_young的专栏 7821

微信、QQ、微博第三方登录

                     微信、QQ、微博第三方登录与分享    最近项目终于要完结了,甲方可能是觉得这个项目做得不错,准备推广,说他们的boss要开发布会了,我听后内心偷偷一笑,这种傻b系统还开发布会,别逗我笑,我的小心脏受不了。于是他们又过来了几次,说加个第三方登录与分享功能。嗯,加个第三方登录与分享,说得轻巧,可苦了我。而且啊,第三方登录,是要做iOS端和Android端的,...

Benson的博客 1万+

Android微信第三方登录(个人笔记

今天在写微信登录,花了半天时间搞定、然后写下自己的笔记,希望帮助更多的人。欢迎各位指教。 微信授权登录,官方说的不是很清楚、所以导致有一部分的坑。 微信注册应用平台的应用签名,下载 微信签名生成工具 输入项目的packageName也可以查看到。 (注意:debug、Release 一定要区分,因为2种生成的微信签名不一致,会导致没有跳转、回调。。。。一般在微信开发者上面注册的是

永远是死循环 1861

Android第三方app 微信授权登录

首先呢,说到第三方,大家应该首先想到的是: 1.appid (第三方给的) 2.密钥 (第三方给的) 3.签名文件 4.包名 这4样,往往决定着的是第三方好用不好用!!! 所以呢… 1.申请你的AppID 请到 微信开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下: 在...

weixin_43755649的博客 2662

wechat_kit微信登录完全指南:从基础授权到扫码登录实现

wechat_kit是一款专为Flutter开发者打造的微信登录/分享/支付SDK,提供了简单高效的微信授权解决方案,帮助开发者快速集成微信登录功能到Flutter应用中。 [![wechat_kit Flutter微信登录SDK](https://raw.gitcode.com/gh_mirrors/we/wechat_kit/raw/e836d13ff8fc81e9e339c84948be2

gitblog_00555的博客 1635

Android之微信第三方登录

Android微信第三方登录个人在用到微信登陆接口的时候发现官方教程很难一下子看懂,尤其是对一些刚刚接触第三方登录的开发者来说。官方教程:点击打开链接1.第一步:申请你的AppID到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发微信开发者应用网页 地址:点击打开链接1.管理中心——&gt;创建新应用。2.填写应用基本信息,一个月可以改...

starzhangkiss的博客 3660

Android实现使用微信登录第三方APP的方法

本文实例讲述了Android实现使用微信登录第三方APP的方法。分享给大家供大家参考,具体如下: 使用微信登录APP,免去注册过程,现在已经有很多的类似应用了。集成该功能过程不复杂,但还是有一些地方需要注意的。 开始之前,需要做下面的准备工作。 1、到微信开放平台注册你的APP,并申请开通微信登录的权限。参考这里: https://open.weixin.qq.com// 2、下载Android SDK和签名查看工具,请参考: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&

Android开发接入第三方原生SDK实现微信登录

微信开放平台 : https://open.weixin.qq.com/一、准备工作 : 1.  Android Studio环境下:在build.gradle文件中,添加如下依赖即可:dependencies { implementation'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' }2. 在清单文件AndroidMan...

JiYaRuo的博客 5235

更多 LSTM 变种——应用于 CMAPSS 数据集

本文并模型介绍,只是把一些比较火的技术,像双向注意力机制,自注意力机制这样的比较火的内容,简单的和LSTM堆叠,结果发现效果都不如最基础的,这里作者将本人代码及实现结果,进行展示,给各位想更改LSTM的朋友一些。

2301_77491330的博客 1765

Android-studio原生微信第三方登录、分享

第一步:注册开发者账号,—->微信开放平台https://open.weixin.qq.com/第二步:创建一个应用,并通过审核(其中需要填写项目中的Demo的包名以及应用签名) tip1:包名为AndroidManifest.xml下的package tip2:签名可以使用签名工具进行签名,签名之前必须先进行打包操作 选择你想要打包的应用 如果有打包文件的话直接选

qq_29680071的博客 5128

React项目实战:用AntV G6打造可折叠组织架构图(附完整代码)

本文详细介绍了如何在React项目中使用AntV G6库构建一个功能完整的可折叠组织架构图。通过实战代码演示了从环境搭建、自定义节点、折叠状态管理到性能优化的全流程,重点解决了企业级应用中处理复杂树形数据、实现流畅交互等核心问题,并提供了可直接复用的组件代码。

weixin_29016315的博客 312

《惠普工作站设置BIOS从U盘装系统》

惠普工作站设置BIOS 惠普工作站在做服务器时应用广泛,本文介绍下其BIOS开机自启动设置,附上图片,以供学习参考。 惠普工作站设置BIOS 启动步骤如下: 第一步:根据需要对BIOS进行更改,并保存 1.重启工作站按F10进入BIOS设置(也可以按ESC键选择进入BIOS设置的选项)。 图1 惠普工作站B...

istrangeboy&begin zero的博客 2万+

vue+cordova 实现第三方登录( QQ 微信 微博)之微信登录

概要 1、首先先到各个开放平台申请开发者账号 先申请,审核通过还需要一定时间 微信开放平台 https://open.weixin.qq.com/ 腾讯开放平台 http://open.qq.com/ 新浪微博开放平台 http://open.weibo.com/ 2、添加对应的cordova插件 QQ:https://github.com/iVanPan/Cordova_QQ.git 微...

路遇惊喜 6021

NET 实战:30 天搞定企业级 Web 订餐系统(附完整源码 + 数据库设计)

订餐流程:浏览菜品 → 选择菜品及数量 → 填写送餐地址 → 提交订单 → 数据库记录核心代码(绑定菜品列表):vb' 绑定菜单表到DataGrid控件,展示菜品信息user id=sa;' 查询菜品名称、价格、口味Dim adpt1 As New SqlDataAdapter("select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish", conn)End Sub用户体验优化。

m0_67740236的博客 1517

android第三方登录之微信登录详情

微信的第三方登录详解 根据公司需要,特将APP微信第三方登录予以详解,以共享我这几天的研究成果。 第一步:准备工作 微信登录不同于其他第三方登录,相对来说比较麻烦一点,网上的列子也相对少一点,在微信开放平台注册完应用通过审核之后,得到AppId和AppSecret。就可以进行微信分享等功能,但是要想实现微信登录就必须进行认证。这个认证需要300元。 注册应用的时候签名要用微信官方提供的AP

缘无痕—末世蓝风的博客 2658

手把手教你用Logisim搞定华科计组实验:单总线CPU硬布线控制器设计(含Excel自动生成电路技巧)

本文详细解析了如何使用Logisim完成华科计组实验中的单总线CPU硬布线控制器设计,特别分享了利用Excel自动生成电路逻辑的高效技巧。从实验准备、状态机表格填写到模块化构建和系统联调,提供全流程实战指导,帮助读者快速掌握计算机组成原理核心概念,大幅提升实验效率。

weixin_28744423的博客 321

Full Range && Limit Range

Full Range && Limit Range1 Full range和Limit Range定义2 为什么会需要Limit Range3 用Full range去显示limit Range图片4 YUV转RGB5 额外 1 Full range和Limit Range定义 我们知道,对于RGB和YUV的色彩空间来说,有个位深(bit-depth)的概念;位深是指记录图像每个像素的色彩通道时所使用的bit数,常见的RGB888,YUV420-8bit。以RGB888为例,其代表R G B

zjhcj1的博客 1万+

安卓第三方登录之微信登录(图文详解)

一、创建应用并成为开发者1、创建应用1)到微信开放平台管理中心,点击“创建移动应用”2)填写基本的应用信息3)填写平台信息这里还是说一下怎么获取应用签名吧:到“资源中心”--&gt;“资源下载”--&gt;“Android资源下载”,找到“签名生成工具”下载即可。飞机直达:Gen_Signature_Android2将APP进行打包安装到手机(如果是在IDE中直接运行后安装的话,是使用debug签...

YiRanAiNi_的博客 7704

海康网口相机不能被flexscan3d识别到MVS版本为4.6.1,flex为3.3.24在MVS中能够检测到,但是在flex中只能看到电脑自带相机,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1040

第三方登录微信登录流程

据微信开放平台“开发资源”中网站应用微信登陆功能开发指南描述:进行授权登陆接入前,需要先注册一个开发者账号,并拥有一个已经审核通过的网站应用,并获取AppID和APPSecret,然后申请微信登陆并通过审核后,可以接入流程进行开发。 据开发者资质认证处介绍:开发者资质认证通过后,微信开放平台帐号下的应用,将获得微信登录、智能接口、第三方平台开发等高级能力。 所以在微信第三方授权登陆获取用户信息开发前,需要做一些前期准备。目的是获取到AppID以及AppSecret,并成功申请微信登陆功能。 一、前期准

明天也是太阳花 2万+

C#实战大华智能安防系统:从SDK封装到视频流与智能报警的全链路落地

本文将介绍C#集成大华SDK开发安防系统的实战经验,重点解决多路视频预览卡顿和报警延迟问题。文章通过三层架构设计(SDK封装层、业务服务层、应用层)实现解耦,详细分析线程安全封装、高效解码显示和智能事件联动等核心技术。针对16路摄像头同时预览时CPU占用率过高的问题,提出使用子码流拉流与异步解码的优化方案,并总结8个常见开发陷阱的解决方案。文中还提供了大华智能安防系统的完整架构图,展示从设备层到应用层的交互流程,特别强调业务服务层中视频流服务和智能报警服务的核心功能设计。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 428

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: Centos 7 修改sshd端口
下一篇: Android WindowManager 窗口泄漏的解决记录
丶Kevin_
博客等级 码龄14年 8粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值