APP调用第三方(微信)登录(最详细的实现流程)
最近使用weexplus做了个app 用户需要的是可以使用第三方微信实现登录(虽然网上有很多相关的什么申请开发者账户、appid、openid等资料;但是都是讲的中间的那一部分请原谅我是个菜鸟,脑补开始和结局那是十分的痛苦的,让人看了云里雾里的。);于是我就去weexplus 官网了,发现还整有个wechat插件。于是直接就整合到应用里去了。接下来就开始了我的一路填坑之旅了…
一、插件不可用
weexplus 微信插件 https://weexplus.github.io/doc/mo-kuai/wechat.html
var wechat=weex.requireModule('wechat')
var appId=""
wechat.regist(appId)
当我吧这个代码拷到应用中,应用启动直接就这个样子了

最后发现是没有重新打包安装apk(同cordova 一样你新增了plugin就必须重新打包安装app否则插件将无法在设备上调用)
二、调用微信登录 onResp 无响应
1、没有登录情况
在没有登录的情况可以调用到微信的登录窗口,如下
WechatModule源码
|
调用时
|
调用微信登录窗口
|
然而在微信处于登录状态的时候调用就没有了反应(为什么始终不走onResp回调呢?一直无法得到微信返回的数据)!

三、进行开发者资质认证和移动应用的创建
找了半天才明白,没有去微信.开放平台 https://open.weixin.qq.com 进行开发者资质认证和移动应用的创建;只有这样才能拥有(使用微信帐号登录App或者网站)的能力;如下来至官网截图:


1、开发者资质认证
开发者资质认证
|
填写企业资料
|
2、移动应用申请
创建自己的应用
|
用于android平台
|
等待审核
|
其中引用申请中 ,app签名要注意,需要安装 Gen_Signature_Android2.apk
网盘下载地址https://pan.baidu.com/s/1MY8g0k29GqWWmsY1z9ZZ4w 提取码 jc8e
输入你的app 包名点击 Get Signature 获取签名
|
将签名填入
|
四、调用微信进行登录
1、应用审核通过,获取appid和 appSecret

2、开通微信账号登录app或网址

3、注册wechat实例
var wechat=weex.requireModule('wechat')
var appId=""
wechat.regist(appId)
最终java中调用的是这个(这个我们不用管,插件自己搞定)
@JSMethod
public void regist(String appId)
{
wxApi = WXAPIFactory.createWXAPI(WeexApplication.getInstance(), appId, true);
wxApi.registerApp(appId);
}
最终ios中调用的是这个(这个我们不用管,插件自己搞定)
-(void)regist:(NSString*)appId
{
[WXApi registerApp:appId enableMTA:YES];
}
4、设置scope参数
var wechat=weex.requireModule('wechat')
var p={}
p.state = "snsapi_userinfo";
p.scope = "wechat_sdk_demo_test";
wechat.login(p,(res)=>{
if(res.errCode==0)
{
//success
var code=res.authCode; //do something
}
})
最终java中调用的是这个(这个我们不用管,插件自己搞定)
@JSMethod
public void login(final Map param, JSCallback callback)
{
if(wxApi==null)
{
Toast.makeText(getContext(),"请先调用regist方法注册appId!",Toast.LENGTH_SHORT).show();
return;
}
if(!wxApi.isWXAppInstalled())
{
Toast.makeText(getContext(),"未安装微信!",Toast.LENGTH_SHORT).show();
return;
}
WechatEntryActivity.callback=callback;
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
final SendAuth.Req req = new SendAuth.Req();
req.scope = param.get("scope")+"";
req.state = param.get("state")+"";
boolean requestres = wxApi.sendReq(req);
Toast.makeText(getContext(),"调用结果:"+requestres,Toast.LENGTH_SHORT).show();
}
});
}
最终ios中调用的是这个(这个我们不用管,插件自己搞定)
-(void)login:(NSDictionary*)param callback:(WXModuleKeepAliveCallback)callback
{
WXApiManager.sharedManager.loginCallback=callback;
SendAuthReq *req=[SendAuthReq yy_modelWithDictionary:param];
[WXApi sendAuthReq:req viewController:weexInstance.viewController delegate:[WXApiManager sharedManager]];
}
5、只要上面步骤都完成后,就可以成功调用到微信的登录授权页面了,如下实例

APP调用第三方(微信)登录(最详细的实现流程)的更多相关文章
- Android集成第三方微信登录
第一步: 在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度. 应用创建完毕后会得到两个值:AppID.AppSecret,用这两个值来请求微信. 然后去微信开放平台的资源 ...
- Laravel6实现第三方 微信登录
目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发.对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库. 1. 安装 ...
- ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件
1.自己的APP调用第三方打开文件 主要是使用 UIDocumentInteractionController 类 并实现 UIDocumentInteractionControllerDel ...
- APP微信登录 服务器处理代码
采用框架THINKPHP5 需要客户端传的参数有 udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...
- APP开发,微信第三方登录的介绍
去年做了一阵APP相关的开发,经常遇到第三方登陆的需求,比如微信.微博.fb的第三方登陆等等,其实主要的流程都大同小异,这里就以微信为例来介绍,希望对大家有帮助. 微信开放平台(open.weixin ...
- 详解如何进行第三方App接入微信登录
微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...
- 关于使用微信登录第三方APP的实现(Android版)
使用微信登录APP,免去注册过程,现在已经有很多的类似应用了.集成该功能过程不复杂,但还是有一些地方需要注意的. 开始之前,需要做下面的准备工作. 1.到微信开放平台注册你的APP,并申请开通微信登录 ...
- APP微信登录---第三方登录
(一)引入maven配置 <dependency> <groupId>com.github.liyiorg</groupId> <artifactId> ...
- 基于第三方微信授权登录的iOS代码分析
本文转载至 http://www.cocoachina.com/ios/20140922/9715.html 微信已经深入到每一个APP的缝隙,最常用的莫过分享和登录了,接下来就以代码的形式来展开微信 ...
- Asp.Net微信登录-手机网站APP应用
要求:公众号必须先认证,认证费用¥300/年,比较黑 一.微信登录核心代码 //核心代码,没判断异常 1.登录页面 protected void Page_Load(object sender, Ev ...
随机推荐
- day11-MySql存储结构
MySql存储结构 参考视频:MySql存储结构 1.表空间 不同的存储引擎在磁盘文件上的结构均不一致,这里以InnoDB为例: CREATE TABLE t(id int(11)) Engine = ...
- MGF multivariate generating function 多变量生成函数
目录 MGF多变量生成函数multivariate generating function 定义 例子 Extremal parameters III.8.1 largest components 例 ...
- java多线程--6 死锁问题 锁Lock
java多线程--6 死锁问题 锁Lock 死锁问题 多个线程互相抱着对方需要的资源,然后形成僵持 死锁状态 package com.ssl.demo05; public class DeadLock ...
- Kafka 管理【主题、分区、消费者组】
更多内容,前往 IT-BLOG 主题操作 使用 kafka-topics.sh 工具可以执行主题的大部分操作.可以用它创建.修改.删除和查看集群里的主题.要使用该工具的全部功能,需要通过 --zook ...
- 基于 ByteHouse 构建实时数仓实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着数据的应用场景越来越丰富,企业对数据价值反馈到业务中的时效性要求也越来越高,很早就有人提出过一个概念: 数据的 ...
- Mac 音频转换器推荐 DRmare Audio Converter、Audi Free Auditor
给大家推荐两款 Mac 上的音频转换器,这两款转换器都可以转换苹果音乐,iTunes歌曲或者一些常规的音轨到MP3, FLAC, WAV, M4A, AAC格式等等,转换后我们就可以在所有的设备和播放 ...
- innerHTML和outerHTML区别
1.innerHTML <body> <p>你好</p> <div id="test"><h5>就是喜欢你</h ...
- Flutter中如何取消任务
前言 在开发过程中,取消需求是很常见的,但很容易被忽略.然而,取消需求的好处也很大.例如,在页面中会发送很多请求.如果页面被切走并处于不可见状态,就需要取消未完成的请求任务.如果未及时取消,则可能会导 ...
- w11 U盘启动进PE看不到硬盘解决方法
w11 U盘启动进PE看不到硬盘解决方法 今天,因为要配系统,所以需要进pe,改配置文件,进去之后发现看不到系统盘,大吃一惊,然后各种找资料,最后,还是被我搞定了. 这里以戴尔为例,方法都差不多,先看 ...
- Redis使用之缓存清除
1. Redis到期缓存清除策略(三种) 定时删除:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除. 优点:定时删除策略对内存是友好的,通过 ...
WechatModule源码
调用时
调用微信登录窗口
开发者资质认证
填写企业资料
创建自己的应用
用于android平台
等待审核
输入你的app 包名点击 Get Signature 获取签名
将签名填入