最近使用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调用第三方(微信)登录(最详细的实现流程)的更多相关文章

  1. Android集成第三方微信登录

    第一步: 在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度. 应用创建完毕后会得到两个值:AppID.AppSecret,用这两个值来请求微信. 然后去微信开放平台的资源 ...

  2. Laravel6实现第三方 微信登录

    目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发.对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库. 1. 安装 ...

  3. ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件

    1.自己的APP调用第三方打开文件 主要是使用  UIDocumentInteractionController  类   并实现 UIDocumentInteractionControllerDel ...

  4. APP微信登录 服务器处理代码

    采用框架THINKPHP5 需要客户端传的参数有  udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...

  5. APP开发,微信第三方登录的介绍

    去年做了一阵APP相关的开发,经常遇到第三方登陆的需求,比如微信.微博.fb的第三方登陆等等,其实主要的流程都大同小异,这里就以微信为例来介绍,希望对大家有帮助. 微信开放平台(open.weixin ...

  6. 详解如何进行第三方App接入微信登录

    微信登录接入 微信登录遵循协议Aouth2.0中的授权码模式 我们来看一下Aouth2.0中的授权码模式是怎么定义的: 授权码模式(authorization code)是功能最完整.流程最严密的授权 ...

  7. 关于使用微信登录第三方APP的实现(Android版)

    使用微信登录APP,免去注册过程,现在已经有很多的类似应用了.集成该功能过程不复杂,但还是有一些地方需要注意的. 开始之前,需要做下面的准备工作. 1.到微信开放平台注册你的APP,并申请开通微信登录 ...

  8. APP微信登录---第三方登录

    (一)引入maven配置 <dependency> <groupId>com.github.liyiorg</groupId> <artifactId> ...

  9. 基于第三方微信授权登录的iOS代码分析

    本文转载至 http://www.cocoachina.com/ios/20140922/9715.html 微信已经深入到每一个APP的缝隙,最常用的莫过分享和登录了,接下来就以代码的形式来展开微信 ...

  10. Asp.Net微信登录-手机网站APP应用

    要求:公众号必须先认证,认证费用¥300/年,比较黑 一.微信登录核心代码 //核心代码,没判断异常 1.登录页面 protected void Page_Load(object sender, Ev ...

随机推荐

  1. Echarts中slider滑块调整样式

    今天遇到了一个问题,记录一下. 效果图. 原型图 一个页面中,引入了echarts的柱状图来动态显示数据,由于柱状图太高,echarts没有自动生成的滚动条,所以就用slider滑块手写了一个,但是效 ...

  2. 记一次生产频繁发生FullGC问题

      问题发现 早上过来,饭都没来的及吃,运维就给我发来信息,说是某个接口调用大量超时.因为最近这个接口调用量是翻倍了,所以我就去检查了下慢SQL,发现确实是有较多的慢SQL,所以我就缩减了查询的时间范 ...

  3. 灵感宝盒图谱全新改版!代码实验室开启报名丨RTE NG-Lab 双周报

    前言 RTE NG-Lab 计划已经推出一段时间了,计划目前包含灵感宝盒(Idea Box).代码实验室(Code Lab).独立开发者孵化器(NGLab Incubator)三个项目.我们希望借助这 ...

  4. Flink基本概念及架构

    1.基本概念 无界和有界数据.任何类型的数据都可以形成一种事件流.信用卡交易.传感器测量.机器日志.网站或移动应用程序上的用户交互记录,所有这些数据都形成一种流.数据可以被作为 无界 或者 有界 流来 ...

  5. Java语言标识符的命名规范(超详细讲解)

    前言 在上一篇文章中,壹哥带领大家开始编写了第一个 Java 案例,在我们的 cmd 命令窗口中输出了"Hello World"这句话.并且我还给大家留了一个小作业,你做出来了吗? ...

  6. 基于DPDK抓包的Suricata安装部署

    一.背景 Suricata支持网卡在线抓包和离线读取PCAP包两种形式的抓包: 离线抓包天然具有速度慢.非实时的特点 在线捕获数据包又包括常规网卡抓包.PF_RING和DPDK的方式 由于项目分光的流 ...

  7. Java面试——数据库

    一.数据库隔离级别 [1]Read Uncommitted(读取未提交内容):出现脏读,也就是可能读取到其他会话中未提交事务修改的数据.[2]Read Committed(读取已提交内容):不可重复读 ...

  8. selenium 您的连接不是私密连接的解决办法

            一.问题描述 用selenium启动浏览器时,chrome提示您的连接不是私密连接. 二.解决方案 方案1: 在当前页面用键盘输入  thisisunsafe  ,不是在地址栏输入,就 ...

  9. Qt源码阅读(三) 对象树管理

    对象树管理 个人经验总结,如有错误或遗漏,欢迎各位大佬指正 @ 目录 对象树管理 设置父对象的作用 设置父对象(setParent) 完整源码 片段分析 对象的删除 夹带私货时间 设置父对象的作用 众 ...

  10. R语言文本挖掘细胞词库的转换

    搜狗细胞词库解析 一. 加载R包转换 library(rJava) library(Rwordseg) write.csv(as.data.frame(importSogouScel('wuliu.s ...