最近使用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. java多线程基础小白指南--synchronized同步块

    sychronized是java多线程非常关键的一个知识点,这篇博客将从synchronized几个用法以及代码来学习. sychronized的作用是能够保证同一时间只有一个线程来运行这块代码,达到 ...

  2. Go 语言 new 和 make 关键字的区别

    原文链接: Go 语言 new 和 make 关键字的区别 本篇文章来介绍一道非常常见的面试题,到底有多常见呢?可能很多面试的开场白就是由此开始的.那就是 new 和 make 这两个内置函数的区别. ...

  3. 利用Karlibr生成April标定板图像

    1 关键的命令 rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.02 --tspace 0 ...

  4. ACM-刷题记录-14届NEFU校赛

    P2031凯撒密码 #include<bits/stdc++.h> using namespace std; int main(){ string s; int d; while(cin& ...

  5. pandas之分组操作

    在数据分析中,经常会遇到这样的情况:根据某一列(或多列)标签把数据划分为不同的组别,然后再对其进行数据分析.比如,某网站对注册用户的性别或者年龄等进行分组,从而研究出网站用户的画像(特点).在 Pan ...

  6. 对抗 ChatGPT,免费体验 Claude

    对抗 ChatGPT,免费体验 Claude Claude 是 Anthropic 构建的大型语言模型(LLM),对标ChatGPT. Anthropic 创始团队多是前openai研究员和工程师,C ...

  7. Linux(五)用户管理与文件权限

    1 常用的基本命令 Shell可以看作一个命令解释器,为我们提供一个交互式的文本控制台界面,可以通过终端控制台来输入命令,由shell进行解释并最终交给linux内核运行.可以看作用户和硬件的桥梁. ...

  8. React onBlur回调中使用document.activeElement返回body解决方案

    最开始想实现一个功能,点击img图标后给出购物下拉框CartDropdown,当img及CartDropdown失去焦点时隐藏CartDropdown. 最开始的核心代码如下: export defa ...

  9. 详解 APISIX Lua 动态调试插件 inspect

    作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者. 原文链接 为什么需要 Lua 动态调试插件? Apac ...

  10. 使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件

    在一些字典绑定中,往往为了方便展示详细数据,需要把一些结构树展现在树列表TreeList控件中或者下拉列表的树形控件TreeListLookUpEdit控件中,为了快速的处理数据的绑定操作,比较每次使 ...