微信获取用户头像 授权小程序如何授权登录

最近在研究微信小程序开发,非常有意思的一个东西。花了一点时间写了一个微信的登录流程,包括后端接口和小程序代码。
做过微信登录的都知道,我们需要一个标识来记录用户的身份的唯一性,在微信中unionId就是我们所需要的记录唯一ID,那么如何拿到unionId就成了关键,我将项目分为小程序和 后台PHP代码两部分来讲。
先从我们的小程序代码开始
简单的说一下我们小程序的js代码登录流程
login -&获取code -&getUserInfo获取iv和encryptedData -&传给自己的服务器处理 -&返回给小程序结果
var API_URL = "自己的服务器地址";
onLoad: function () {
console.log("iv");
wx.login({//login流程
success: function (res) {//登录成功
if (res.code) {
var code = res.
wx.getUserInfo({//getUserInfo流程
success: function (res2) {//获取userinfo成功
console.log(res2);
var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串转成URI编码
var iv = res2.
//请求自己的服务器
Login(code,encryptedData,iv);
console.log('获取用户登录态失败!' + res.errMsg)
code:服务器用来获取sessionKey的必要参数。
IV:加密算法的初始向量,encryptedData:加密过的字符串。
把code iv encryptedData 传递给我们的服务器
Login(code,encryptedData,iv){
console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv);
//创建一个dialog
wx.showToast({
title: '正在登录...',
icon: 'loading',
duration: 10000
//请求服务器
wx.request({
url: API_URL,
code:code,
encryptedData:encryptedData,
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
'content-type': 'application/json'
}, // 设置请求的 header
success: function (res) {
// success
wx.hideToast();
console.log('服务器返回'+res.data);
fail: function () {
// wx.hideToast();
complete: function () {
// complete
看文档的话,应该知道,我们所需要的unionId就在encryptedData中,所以服务器需要这些信息来把unionId解析出来。
服务器处理逻辑
我php用的是laravel框架
先下载微信的解密demo
这里我选择的是PHP代码,把除了demo外的三个class文件,放入我们自己的项目,以后后面调用。
这里讲解一下服务器的处理流程:
通过微信的接口获取seesionKey,然后在通过sessionKey和iv来解密encryptedData数据获取UnionID。
* @return Response
public function weixinlogin( $user_id=null )
global $App_Error_Conf,$Gift_Ids,$Server_Http_Path,$Is_Local,$Test_User,$Good_Vcode,$WeiXin_Xd_C
$validator_result = input_validator(array('code','iv','encryptedData'));
if(!empty($validator_result)){
return response($validator_result);
$js_code = $_REQUEST['code'];
$encryptedData = $_REQUEST['encryptedData'];
$iv = $_REQUEST['iv'];
$appid = $WeiXin_Xd_Conf['appid'];
$WeiXin_Xd_Conf['secret'];
$grant_type =
$WeiXin_Xd_Conf['grant_type'];
//从微信获取session_key
$user_info_url = $WeiXin_Xd_Conf['code2session_url'];
$user_info_url = sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$user_info_url,$appid,$secret,$js_code,$grant_type);
$weixin_user_data = json_decode(get_url($user_info_url));
$session_key = $weixin_user_data-&session_
//解密数据
$data = '';
$wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key);
$errCode=$wxBizDataCrypt&decryptData($appid,$session_key,$encryptedData, $iv, $data );
最后拿到的这个 data就是我们解密后的encryptedData里面会包含unionId。(补充一点,如果你的小程序没有绑定微信公众号,是不会反悔uId的)
这样简单登录就实现了!更多微信程序相关文章请关注游戏机 文章。
更多阅读下篇:
随意打赏:
第一时间获取技术文章请关注微信公众号!
微信小程序之授权登录的实现(附完整源码)
前言:由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 去触
发。官方连接:点击打开链接
1.实现思路
自己写一个微信授权...
微信小程序授权登录解决方案(含未通过授权解决方案)
getUserInfoF:function(){
var that =
wx.getSetting({
success: (res) =&g...
微信小程序获取手机号授权登录
小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写。
1.getPhoneNumber这个组件通过button...
【微信小程序】通过wx.login获取用户唯一凭证openId
  小程序的开发者密码(AppSecret)是一个非常重要的字段,使用该密码可以调用小程序的所有后台接口。请不要将该字段放置在微信小程序的前端代码中,因为微信手机客户端容易被反编译并轻松获得Appse...
微信小程序的开发之授权功能
最近刚好在做一个小程序的简单开发,故准备将其中的一些要点记录下,以备日后参考
相信最近在开发小程序的小伙伴们都清楚,官方将授权功能修改了(一句mmp不知道能不能引起共鸣~)。害我找了半天的原因….
微信小程序wx.login()获取openid,附:前端+后端代码(超详细版)
微信小程序开放了微信登录的api,无论是个人还是企业申请的小程序均可使用。首先创建一个项目,把这些代码都清空,我们自己写!然后,开始写了!首先index.wxml,写一个button用于发起登录ind...
微信小程序-登录流程
流程图:1、首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话密钥)。2、拿到jscode后,将其发送给服务端,服务端拿它与...
微信小程序 登录流程规范
官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=
一. 官方登录时序图二. 简单理解这里仅按...
微信小程序授权登录接口
1.首先接收前端传过来的code
2.带上appid,secret以及code去请求微信,获取openid,那倒openid就可以获取用户的信息了
获取到openid,将openid返回给前...
微信小程序调用微信登陆获取openid及用户信息 java做为服务端
一、微信小程序
第一步:调用 wx.login获取code 文档地址
第二步:判断用户是否授权读取用户信息 文档地址
第三步:调用wx.getUserInfo读取用户数据 文档地址
第四步:由于小程序...
没有更多推荐了,微信小程序静默授权 | 微信公众平台 开发者社区
微信小程序静默授权
{{pluginInfo.appname}}
{{pluginInfo.appid}}
期待看见你的思考和回答
暂无评论权限,请用开发者微信号登录后发表评论。请登录查看
wx.authorize(OBJECT)基础库 1.2.0 开始支持,低版本需做部分接口需要获得同意后才能调用。此类接口调用时,如果用户未授权过,会弹窗询问用户,用户点击同意后方可调用接口。如果用户点了拒绝,则短期内调用不会出现弹窗,而是直接进入 fail 回调。用户可以在小程序设置界面中修改对该小程序的授权信息。本接口用于提前向用户发起授权,调用后会立刻弹窗询问用户是否同意小程序使用某项功能或获取用户的某些数据,但不会实际调用接口。如果用户之前已经同意,则不会出现弹窗,直接返回成功。OBJECT参数说明:参数名类型必填说明scopeString是需要获取权限的scope,详见&scope 列表successFunction否接口调用成功的回调函数failFunction否接口调用失败的回调函数completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)success返回参数说明:参数名类型说明errMsgString调用结果示例代码:// 可以通过 wx.getSetting 先查询一下用户是否授权了 &scope.record& 这个 scope
wx.getSetting({
success(res) {
if (!res.authSetting['scope.record']) {
wx.authorize({
scope: 'scope.record',
success() {
// 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
wx.startRecord()
scope 列表scope对应接口描述scope.userInfowx.getUserInfo用户信息scope.userLocationwx.getLocation, wx.chooseLocation地理位置scope.addresswx.chooseAddress通讯地址scope.recordwx.startRecord录音功能scope.writePhotosAlbumwx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum保存到相册
以上内容是否对您有帮助:
意见反馈:
联系方式:
广告等垃圾信息
不友善内容
违反法律法规的内容
不宜公开讨论的政治内容微信小程序设置,微信小程序设置授权-记住吧
微信小程序设置
jazdbmin1639整理
微信小程序设置
微信小程序设置授权
微信小程序,weixin,求微信小程序的横向LISTVIEW怎么设置
额就是类似这种{{idx}}: {{itemName.message}}条件渲染出来的效果都是纵向的 如何把他变为横向的?我在这个外面加过scrollview,但是像这种{{item.title}}
微信小程序,weixin,微信小程序怎么设置textarea文本域输入
微信小程序怎么设置启动页面
第一、线下扫码打开扫一扫,通过扫描线下二维码的方式进入小程序。第二、微信搜索在客户端最上方的搜索窗口,你可以通过搜索获取一个小程序。第三、公众号关联同一主体的小程序和公众号可以进行关联,并相互跳转,该功能需要经开发者自主设置后使用。一个公众号可以绑五个小程序,但一个小程序只能被一个公众号绑定。你可以通过公众号查看并进入所绑定的小程序,反之,也可以通过小程序查看并进入所关联的公众号。第四、好友推荐当你发现一个好玩的或者实用的小程序,可以将这个小程序,或者它的某一个页面转发给好友或群聊。
微信新增功能分享小程序怎么设置
没有设置,只能线下扫码:用户可以在小程序中使用扫一扫。对话分享:用户可以分享小程序或其中的任何一个页面给好友或群聊。消息通知:商户可以发送模板消息给接受过服务的用户,用户可以在小程序内联系客服,支持文字和图片。小程序切换:用户可以在使用小程序的过程中快速返回聊天。历史列表:用户使用过的小程序会被放入列表,方便下次使用。公众号关联:微信小程序可与公众号进行关联。搜索查找:用户可直接根据名称或品牌搜索小程序。www.jIzH+uba.coM
小提示:内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
微信小程序设置 推荐文章:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
推荐不满意?点这里&&>>&&

我要回帖

更多关于 微信获取用户头像 授权 的文章

 

随机推荐