首页 > 其他分享 >微信开发-获取AccessToken授权

微信开发-获取AccessToken授权

时间:2024-05-16 17:42:00浏览次数:21  
标签:code AccessToken URL 微信 access 获取 token 授权

获取微信授权有两种方式

1:通过AppID和AppSecret,后台可以直接获取

2:通过网页授权(主要应用场景是Web端例如公众号等需要获取用户基本信息,需要用户授权,最终通过Code换取access_token)

由于目前Senparc等框架都比较重量级,往往使用其开发时不光要理解微信官方的开发文档,还要理解其类库的使用方式,比较繁琐,其实微信通讯只要理解了微信官方的通讯模式,实现起来还是比较简单的,所以本文尽量以Flurl为基础,通过官方的文档来实现,不借助成型的微信专用类库来实现。

另外注意开发时可以申请微信开发公众号的测试号来进行开发,支持IP和域名方便调试,但是正式发布时只支持经过ICP备案的域名,这点务必注意,提前做好域名申请及备案ICP备案的相关工作。

公众号测试号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

 

(1)AppID & AppSecret直接获取AccessToken

官方接口调用说明:

https请求方式:    GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

 代码如下:

///
///Access_Token_Url:换成自己的AppID & AppSecret
///
public static AccessTokenModel GetAccessToken()
{
    var accessToken = WechatMPUrls.Access_Token_Url.GetJsonAsync<AccessTokenModel>().GetAwaiter().GetResult();
    return accessToken;
}



public class AccessTokenModel
{
    public string access_token { get; set; }


    public int expires_in { get; set; } 
}

 (2)微信网页授权主要分成两步【官方文档因为还同时说明了一些其他问题分成了4步,可以参考官方说明,这里为了简化只说明最必须的两步】

1 第一步:用户同意授权,获取code(根据个人公众号信息构造URL,引导用户访问【例如追加到公众号的菜单连接】,主要就是AppID和个人开发的回调URL以及一些授权的参数,例如只获取个人openid可以采用静默授权的参数,获取用户基本信息需要弹出窗口用户授权,另外需要注意的是回调URL参数需要做URL编码,网上有在线工具可以提供)

2 第二步:通过code换取网页授权access_token(回调的URL需要开发者开发的内容)

回调URL开发的功能(C# MVC开发的示例)

//示例一:采用Senparc
/// <summary>
/// 1:引导用户访问微信服务器Url(https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect)
///   该URL需要设置参数 1) redirect_uri:需要开发 2)SCOPE:snsapi_base和snsapi_userinfo 3)state:可选,自定义
///   默认拥有scope参数中的snsapi_base和snsapi_userinfo 权限)->如果是snsapi_userinfo需要用户授权,授权通过通过后微信服务器将跳转至 redirect_uri/?code=CODE&state=STATE参数指定的地址(redirect_uri需要URL编码)
/// 2:开发第一步redirect_uri 用于获取CODE参数,拿着CODE参数获取access_token (https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code)
/// 3:拉取用户信息(需scope为 snsapi_userinfo),如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了
///     https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
///     
/// 总结:开发Redirect_Uri,用于获取CODE,进而获取access_token来获取用户基本信息
/// 微信公众号配置: 网页服务->网页帐号 ->网页授权获取用户基本信息 ->修改:nb-fzcxc.cn 注意:不需要http/https头部,也不需要到具体的页面,到域名即可
/// </summary>
/// <returns></returns>

public string WechatCallBack(string code, string state)
{
    try
    {
        var wxRes = OAuthApi.GetAccessToken(appID, appsecret, code);
        return $"Token:{wxRes.access_token}";
    }
    catch (Exception ex)
    {
        return ex.Message;
    }
}

  示例2:采用FlUrl获取

 可以看到相比第一种方式只是URL不一样了,并且多了一个code参数而已,code参数回调时微信服务器会带到URL中,相关代码如下:

public static OAuthAccessTokenModel OAuthGetAccessToken(string code,string state)
{
    string appId = "";
    string appSecret = "";
    string url = $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={appId}&secret={appSecret}&code={code}&grant_type=authorization_code";
    var accessToken = url.GetJsonAsync<OAuthAccessTokenModel>().GetAwaiter().GetResult() ;
    return accessToken ;
}

 

标签:code,AccessToken,URL,微信,access,获取,token,授权
From: https://www.cnblogs.com/volts0302/p/18196335

相关文章

  • 【ubuntu】安装企业微信
    1.下载Wine环境包:            Wine环境包下载地址:http://archive.ubuntukylin.com/software/pool/partner/ukylin-wine_70.6.3.25_amd64.deb 2.下载企业微信(wine)包:            企业微信(wine)包下载地址:http://archive.ubuntukylin.com/software/pool/par......
  • 推荐一款微信公众平台Python开发神器!
    1、引言在当今数字化时代,微信公众平台成为了企业和个人连接用户的重要渠道。为了高效地管理和与用户互动,开发者需要一个强大而灵活的工具。Weixin-Python正是这样一个为微信公众平台量身打造的Python库,它以其简洁的API和丰富的功能赢得了众多开发者的青睐。本文将深入探讨......
  • 网站应用微信登录 DEMO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>网站应用微信登录DEMO</title&g......
  • 网站应用微信登录 DEMO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>网站应用微信登录DEMO</title&g......
  • 微信小程序获取手机定位+经纬度转详细地址
    在微信小程序中获取手机定位信息wx.getLocation({type:'wgs84',success(res){//console.log(res)constlatitude=res.latitudeconstlongitude=res.longitudeif(flag)......
  • 微信云托管使用腾讯自家免费提供50张额度的SSL证书,稳得一批
    因为之前的免费证书小程序打包后就提示证书无效,只能在模拟器才能用,然后有个功能就一直没上,刚才无意间想着谷歌搜索一下看有没有能用的免费证书: 嘿,您猜怎么着,还真有,还是腾讯自家的,这不妥了吗。遂申请使用,审核一下就通过了,很快,然后我就在微信云托管换上了新证书,嘿,就不报错了,这......
  • 微信3.9.8.25机器人(Hook注入)搭建教程文档
    开源地址https://github.com/ttttupup/wxhelper  微信破解dllhttps://github.com/nefarius/Injector  注入工具https://github.com/tom-snow/wechat-windows-versions/releases 微信历史版本基本原理启动指定版本PC微信以后,利用注入程序将dll文件注入到微信进程内,可......
  • 记一次特别的未授权访问
    某个夜里,随手点进去的一个小程序,引发的连锁反应。开局一个小程序:登录方式令人发愁,尝试收集,无果。数据交互的地方说不定有sql,再次尝试,还是无果。复制连接去web端,看看有没有什么收获:好熟悉的界面,这不是SpringBoot框架不,立马工具梭哈。果然存在springboot未授权访问,网上查......
  • 微信小程序热门选题
    一、大体实现思路微信小程序,现在是非常热门的,基于微信生态开发的。现在很多计算机毕业的同学,都会选择微信小程序作为毕业设计小程序端通常都是展示数据给用户去看的,大多数情况下,这些数据不是写死的,而是前端请求服务器接口获取数据的。博主介绍:✌程序员hunter_code、6年大厂程......
  • 越权与未授权访问
    越权与未授权访问1.0越权与访问控制前置知识越权主要分为水平越权和垂直越权两种水平越权:实现同级别用户权限共享垂直越权向更高级别进行越权,将低权限跨越到高权限。比如由普通用户获得管理员权限访问控制中我们的利用手段有验证丢失:存在验证手段,但并没有实际去使用取......