wap2app(五)-- 微信授权登录以及踩过的坑

应用场景是:用Hbuilder打包app,在app中点击微信授权登录或者某一操作,调起微信授权登录,用户授权后拿到用户信息。

一、登录插件配置

先配置微信登录参数 appid和appsecret,在manifest.json 文件中选择SDK配置,登录鉴权  勾选微信登录,填入在开放平台申请的app参数。

在manifest.json 文件中选择 源码视图,找到“OAuth”,配置为

"OAuth" : {
    "description" : "登录授权"
},

官方相关查阅地址:http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/192

二、在网站中添加授权登录代码

我的需求是:在网站中点击微信授权登录,判断是否来自wap2app,如果来自wap2app则调起微信授权登录。在网站中加入如下代码:

1.点击微信授权登录,获取微信授权服务:

var auths=null;
$("body").on("click",".loginBtn",function(){
    // 微信授权登录
    if(navigator.userAgent.indexOf("Html5Plus") > -1){
        plus.oauth.getServices( function(services){
            auths = services;
            authLogin();
        }, function(e){
            alert("获取分享服务列表失败:"+e.message+" - "+e.code);
        } );
    }

})

2.登录认证

//登录
function authLogin(){
    var s = auths[0];
    if ( !s.authResult ) {
        s.login( function(e){
            // 获取登录操作结果
            var result = e.target.authResult;
            alert( "登录认证成功:"+JSON.stringify(result) );
            authUserInfo()
        }, function(e){
            alert("登录认证失败!");
        }, {} );
    }
}

3.获取用户信息

// 获取登录用户信息操作
function authUserInfo(){
    var s = auths[0];
    if ( !s.authResult ) {
        alert("未登录授权!");
    } else {
        s.getUserInfo( function(e){
            alert( "获取用户信息成功:"+JSON.stringify(s.userInfo) );

            //拿到用户信息,进行相关处理,ajax传用户数据到服务器等
            var prame = JSON.stringify(s.userInfo);

        }, function(e){
            alert( "获取用户信息失败:"+e.message+" - "+e.code );
        } );
    }
}

4.退出登录

function authLogout(){
    for ( var i in auths ) {
        var s = auths[i];
        if ( s.authResult ) {
            s.logout(function(e){
                alert( "注销登录认证成功!" );
            }, function(e){
                alert( "注销登录认证失败!" );
            });
        }
    }
}

官方相关查阅地址:http://www.html5plus.org/doc/zh_cn/oauth.html

在hbuilder中运行会发现可以调起微信授权,且可以获取用户信息,如下图:

点击确认登录后,返回用户信息和unionid等信息,如下图:

但是打包后会一直提示登录认证失败,无法授权,也没有调起微信授权的页面,主要有以下两个错误:

一、报错 code = -2,用户取消

解决办法:研究了很久,发现主要是两个原因:1.使用了网站的appid和appsecret,应该是申请的app应用的appid和appsecret,2.应该使用自有证书

依旧还是报错 code = -2,检查是否在线上运行,即在开放平台绑定的域名必须与该项目的域名一致,即我们常说的,微信分享、微信登录必须在线上测试

二、报错 code = -100如下图

问题1:检查应用签名是否错误

问题2:检查开放平台的配置授权回调域名是否配置,且是否配置正确(www.baidu.com格式)

解决办法:

微信开放平台移动应用中的应用签名错误,若申请应用时开发信息中数据填写错误,直接修改,已审核通过的不需要重写审核。

应用签名的要求:

1.MD5格式 2.签名为小写;3.去除冒号。都为必须条件。

在Hbuilder中配置时,签名也必须是修改后的格式(md5、小写、去冒号)。

Hbuilder中配置应用签名时,打开manifest.json文件,打开“源码视图”(基础配置,图标配置,启动图配置,SDK配置,模块权限配置中都是没有应用签名配置的,所以很容易遗漏修改它的值),找到 plus --> signature,修改signature的值为符合条件的值即可

以上打包之后,不在报错,但是还有一个问题,在app中点击微信授权后,除了首次会调起微信授权手动授权的界面,再次授权时直接就弹出了用户信息,即直接执行了,缺少用户在终端确认的请求授权过程

alert( "登录认证成功:"+JSON.stringify(result) );

这是因为,授权的微信号只有首次授权时才会调起微信授权的页面,当退出微信授权再次进入时,点击授权会跳转之后再跳回来,自动获取到用户信息。

打包app,微信授权登录常遇到的问题总结

1.使用了网站的appid和appsecret,应该是申请的app应用的appid和appsecret

2.应该使用自有证书

3.微信开放平台移动应用中的应用签名错误,必须满足3点:1.MD5格式 2.签名为小写;3.去除冒号。都为必须条件。

4.(网站或打包app)微信授权登录,必须在开放平台配置授权回调域名,且必须是www形式的,如www.baidu.com,否则授权登录一直报错

5.开发微信分享、微信登录等微信相关的功能,在开放平台或者公众平台绑定的域名必须与该项目的域名一致,即我们常说的,微信分享、微信登录必须在线上测试

原文地址:https://www.cnblogs.com/wangxiaoling/p/9850717.html

时间: 2024-08-08 08:46:15

wap2app(五)-- 微信授权登录以及踩过的坑的相关文章

微信授权登录并获取用户信息接口开发

总结一下微信授权登录并获取用户信息 这个接口的开发流程. 一.首先你的微信公众号要获得相应的AppID和AppSecret,申请微信登录且通过审核后,才可开始接入流程. 二.授权流程 1.流程说明 (1). 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: (2). 通过code参数加上AppID和AppSecret等,通过API换取access_token: (3). 通过access_token进行接口调用,获取

微信授权登录(PHP)

微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的个人信息,而无需将用户名和密码提供给第三方应用.常见微信.QQ登录,省去管理账户的麻烦,也不会造成用户的流失. 打开微信的官方文档,会看到网页授权一些说明.(有点摸不着头脑,主要是当时没能关联起来,微信文档每次看都那么郁闷!!!) 来了解

微信授权登录+微信公众号支付

记录工作备忘 采用TP3.2.3来二开--主要是微信授权登录.js自定义分享.支付+回调 1)先在公众号获取相关配置参数,配置公众号的网页授权域名.js接口域名 // 微信配置参数 'wechat_option' => array( 'appid' => 'w****a769023a', 'appsecret' => 'c****0accc10d19e5f85541b9' ), // 微信支付配置 'WEIXINPAY_CONFIG' => array( 'APPID' =>

[转] Android:微信授权登录与微信分享全解析

https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it/article/details/48317527 PS: access_token是微信认证成功和微信平台做交互用的,access_token有2小时有效期.如果access_token过期后,使用refresh_token获得新的access_token.refresh_token的有效期为30

微信授权登录,关于调不起授权页面,无法响应回调方法,获取不到code 详解

前期准备工作:申请AppId,下载资源包jar.文档等. 微信授权登录步骤: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数:(第1步官方文档写得很模糊分散,做微信授权登录的时候遇到很多问题,现在总结记录下来) 2. 通过code参数加上AppID和AppSecret等,通过API换取access_token,openid: 3. 通过access_token和openid进行接口调用,获取用户基本数据资源或帮

Android:微信授权登录与微信分享全解析

前言 在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用,于是微信,微博,QQ说了:来来来,你们都可以用我家的帐号登录你家应用,只要你遵循OAuth2.0协议标准就行.于是第三方社交帐号登陆成为了许多新兴应用的选择,由于腾讯官方微信开放平台的在线文档相对最新的SDK有些出入,并且登录相关的文档结构次序有些紊乱,今天就把我的一些经验记录在此,对微信开放平

关于微信授权登录并获取Openid以及用户信息

一.集成微信授权登录 二.集成代码 1. AppDelegate 代码 #import "AppDelegate.h"#import "WXApi.h"#import "WXApiManager.h"@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchin

.Net-mvc微信公众号和网站微信授权登录的实现

最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站登录授权,以及微信会员卡,优惠券和扫描二位码的功能,今天我主要想要总结的是微信公众号登录和网站微信授权登录这两者之间的区别于关联. 首先我们必须区别开来微信公众平台开发是指微信公众号进行业务开发(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432),为网站微信登录授权是需要在微信开发

微信公众平台开发——微信授权登录(OAuth2.0)

1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们