微信网页授权一个回调域名对应多个项目

需求:最近产品有一个需求,项目A已经上线并且使用公众号a进行授权,而现在又有一个新项目B也需要这个公众号a进行授权。因为授权的回调地址只有一个,一个回调地址只能对应一个域名。所以总不能对项目A进行重写多设置一个入口多写好多页面来进行项目B的开发吧。这样不但耗费时间,而且项目A和B就不是独立的项目了。

对授权不了解的可以参考我的这篇文章:https://blog.csdn.net/qq_35430000/article/details/79299529

做法有两个:

一、设置一个中间页面进行授权,把code通过地址栏URL传递给这两个项目(或多个项目)


缺点:需要多个域名。中间页授权需要单独的域名,A项目需要一个域名,B项目也需要一个域名。

做法:通过设置标识,确定入口是 项目A(itemType=1)还是 项目B(itemType=2)

项目A的入口 http://域名1?itemType=1

项目B的入口 http://域名1?itemType=2

下面是中间页的一些逻辑



二、只用一个域名,但是这个域名下有两个项目(多个项目)

缺点:可能会导致已上线项目A代码的混乱。

项目结构如下图,在原有项目的基础上再外面再嵌套一层,在主 index.html中通过itemType来判断进入项目A还是项目B


那现在也只有一个域名,也就是 原来A的域名

项目A的入口 http://域名1?itemType=1

项目B的入口 http://域名1?itemType=2


最后:知识有限,参考了一些网上的文章,我总结到的就这两种,如果有不对的地方请指出共同进步。

### 如何获取微信OAuth2授权回调URI 在微信OAuth2授权过程中,回调URI是一个非常重要的组成部分。它用于指定用户完成授权后被重定向到的目标地址。以下是关于如何构建和配置回调URI的具体方法。 #### 构建回调URI的关键要素 回调URI由多个参数组成,这些参数共同定义了授权请求的行为以及后续的操作逻辑。具体来说: - **`appid`**: 这是第三方应用的唯一标识符(即SuiteID),通常以`ww`或`wx`开头[^3]。 - **`redirect_uri`**: 用户授权完成后跳转至的应用服务器地址。此地址需要经过URL编码处理,并且必须属于已设置的企业可信域名列表之一。 - **`response_type`**: 返回类型,在OAuth2协议中固定为`code`。 - **`scope`**: 应用授权的作用范围。可以选择`snsapi_base`(静默授权) 或 `snsapi_privateinfo`(手动授权)。 - **`state`**(可选): 用来保持请求与回调状态的一串字符,可以防止CSRF攻击并帮助验证请求的真实性。 完整的回调URI模板如下所示: ```plaintext https://open.weixin.qq.com/connect/oauth2/authorize? appid=<APP_ID>& redirect_uri=<REDIRECT_URI_ENCODED>& response_type=code& scope=<SCOPE>& state=<STATE>#wechat_redirect ``` 其中 `<REDIRECT_URI_ENCODED>` 是指对原始 URI 使用 URL 编码后的字符串形式[^2]。 #### 配置企业可信域名 为了安全起见,企业微信要求所有的回调URIs都应部署在其预设的信任域名单之内。管理员可以通过管理后台进入【我的企业】-> 【权限管理】 -> 【可信IP白名单 / 可信域名设置】来添加相应的主机名作为合法目标位置。 另外值得注意的是,当遇到诸如“invalid redirect uri”的错误提示时,可能是因为当前提交给 API 的 Redirect Uri 并未被列入允许访问的服务端点之中。因此确认该字段完全匹配预先注册过的条目至关重要[^4]。 #### 实现代码片段 下面提供了一段基于Node.js环境下的简单实现例子,展示如何动态生成包含必要参数在内的完整授权链接: ```javascript async function generateAuthUrl() { const suiteId = 'your_suite_id'; // 替换为您实际使用的 Suite ID const jumpUrl = encodeURIComponent('https://example.com/callback'); // 将您的真实回调路径替换此处 const scopes = ['snsapi_base', 'snsapi_privateinfo']; // 根据需求选择合适的 Scope let authUrlTemplate = `https://open.weixin.qq.com/connect/oauth2/authorize?`; for (let i = 0; i < scopes.length; ++i){ let currentScope = scopes[i]; let constructedUrl = `${authUrlTemplate} appid=${suiteId}& redirect_uri=${jumpUrl}& response_type=code& scope=${currentScope}& state=STATE#wechat_redirect`; console.log(`Generated Auth Url with ${currentScope}:`, constructedUrl); } } generateAuthUrl(); ``` 以上脚本会打印两个版本的不同授权网址分别对应基础信息读取(snsapi_base) 和私密资料获取(snsapi_privateinfo).
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值