hadb / getweixincode Goto Github PK
View Code? Open in Web Editor NEW解决微信OAuth2.0网页授权只能设置一个回调域名的问题
License: MIT License
解决微信OAuth2.0网页授权只能设置一个回调域名的问题
License: MIT License
比如我授权域名是:www.git.com ,网站A。
另外个域名是:test.git.com,网站B。
我在网站B里面把授权代码的读取链接改成了:https://www.git.com/get-weixin-code?appid=
这个时候访问test.git.com,会出现反复登录的问题,一直循环。
网站B test.git.com做了https强制性跳转。
或者是没改对代码?
原来网站b的授权代码是:
public function getOauthCodeUrl($callback, $state = '') {
return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->account['key']}&redirect_uri={$callback}&response_type=code&scope=snsapi_base&state={$state}#wechat_redirect";
}
改成了:
public function getOauthCodeUrl($callback, $state = '') {
return "https://www.git.com/get-weixin-code?appid={$this->account['key']}&redirect_uri={$callback}&response_type=code&scope=snsapi_base&state={$state}#wechat_redirect";
}
使用抓包工具看 ios新版本里redirect_uri丢失
微信公众号和安卓中没问题
我的公众号开了微信支付,如果使用这种跳转方式,调用微信支付的时候会不会有问题?
有一个问题,在微信做完授权重定向回来的请求,怎么拉得到之前设置的redirect_uri呢?看代码,else里面直接获取到了redirect_uri. 总感觉有问题呀。
在www.abc.com域名下部署get-weixin-code.html
需要获取微信授权 的地址是 http://www.xyz.com/index.php?a=3&b=4
这时候
http://www.abc.com/xxx/get-weixin-code.html?appid=XXXX&scope=snsapi_base&state=hello-world&redirect_uri=http%3A%2F%2Fwww.xyz.com%2Findex.php%3Fa%3D326%b%3D4
这样就提示 redirect_url 参数错误
其实可以直接使用nginx的代理功能或者是rewrite功能,直接将一个域名分发到其他域名上
我按照使用方法部署后,一直在授权登录页面跳转,不跳转到我的第二个域名里,这是什么原因?
例如下面的url,
http://dev.order.panpom.com/code/get-weixin-code.html?appid=wx8576fc5a32db3fa0&scope=snsapi_base&state=hello-world&redirect_uri=http://h.93pk.com?Im=abc&gourl=123
实际跳转地址是 http://h.93pk.com/?Im=abc&code=081WYLou0QXK6f1uQhpu0yH2pu0WYLot&state=hello-world
,缺少gourl参数
路由使用hash模式时候, 也就是说redirect_uri 中包含#, 比如redirect_uri为 http://test.com/#/product/1,
最终重定向的地址为 http://test.com/?code=code&state=state#/product/1
正确是应该是 http://test.com/#/product/1?code=code&state=state
随着前端单页的流行, 这样的url会导致一些问题
通过微信公众号 菜单 跳转到其他域名的页面时 出现空白页面问题 跳转授权回调页面 是没问题的 但是其他域名的页面 都是空白页面 如www.baidu.com 请问这种情况如何解决?
通过一个域名301到您的这个授权url,微信不跳转,能获取到get-wexin-code.html文件,但是不再跳转了,如果改成302跳转,就没问题.
update: 看了一下,是获取微信授权的时候没识别到客户端,提示请在微信客户端打开链接
clone下来看了看,对于代码的实现具体了然于心,其部署还是不太了解,可行性存疑
'redirect_uri': encodeURIComponent(location.href) 在未获取到code的情况下,中间站拿到的当前域名的uri,而在具体做跳转到微信那边也会对redirect_uri进行检测是否匹配你所在平台配置的域名,而在else回来的时候自然也是行不通的,微信公众号对其开发者提供了state值,可任意传递值,可在此参数进行各个子业务的区分然而对code进行充分的加盐加密回调各自业务系统;水准不佳若有误解、还望见谅多交流。
有遇到类似问题吗
报错系统错误,错误码:-1,undefined,请问有同样的吗
出现err_blocked_by_client这个错误,怎么解决
简直不能再赞!
你好,在看微信公众号的文档中看到下面着一条:
尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
目前手头没有服务号可以进行测试,请问微信是否会对用code和appsecret换取openid这个接口的发起服务器域名进行校验。比如绑定了abc.com,最后是xyz.com的服务器发起请求获取access_token
//第一步,没有拿到code,跳转至微信授权页面获取code
redirectUri = GWC.appendParams(baseUrl, {
'appid': appId,
'redirect_uri': encodeURIComponent(location.href),
'response_type': 'code',
'scope': scope,
'state': encodeURIComponent(state),
});
把这里的redirect_url 改成 GWC.urlParams['redirect_uri'],不就可以授权后直接跳回目标网址吗,为啥还要跳回来,再跳到目标网址呢?
我依照您项目里面提供的方法,在微信浏览器返回“授权回调域名校验出错,错误码:10003”。
因为我真实回调地址特别简单所以这部分encode应该没问题,仔细核对了您构造的回调地址感觉也没有问题,但是不知道是不是微信内部的正则现在不允许这样进行回调,烦请您看看我的这个问题。
下面是示例:
http://weitest.test.com/get-weixin-code.html?appid=APPID&scope=snsapi_userinfo&state=hello-world&redirect_uri=http%3A%2F%2Fwap.test.com%2F
如果此地址被用户手机访问授权地址暴露,很可能会让他人恶意使用授权访问。可以在跳转处加些主机名访问控制。
redirect_uri必须设置成微信里的配置域名吧?
很好用赞一个
如果在redirecturl中带有额外的参数,&符号,好象就会报错,appid参数错误,不知道什么原因,redirecturl已经encode过
使用的时候部分客户端会出现code been used, "errcode":40163 ,请问何解?
使用微信开发WEB工具会一直显示未绑定开发者 已经是绑定的了
Hi,您好,我是Senparc.Weixin SDK的作者,最近在整理一些微信开发的资源,计划将这个功能下周收录到https://github.com/JeffreySu/WeixinResource,署名和版权信息我们都会保留。
如果有任何问题请联系我,谢谢!
请在微信客户端打开链接
不知各位如何解决掉这个问题?
中间页已经设置好,如果不带参数,会显示api参数为空
烦请抽空回复一下
I have use it to combine our corder , It works , thank you !
在中间页跳到微信的授权页,进行授权时,当用户点击「取消授权」,页面没有自动关闭,而是留在中间页。
如果不使用中间页进行跳转,直接访问微信的授权页,点击「取消授权」可以自动关闭页面。
重现步骤:
尝试解决的方法:
本以为是页面已经跳转,但是路由栏没有变成微信的地址。猜想,如果不是微信的地址就不会关闭。
所以将location.href = redirectUri;
,改成了location.href = redirectUri + "&t=" + (new Date().getTime());
。 强制不让微信内置浏览器不进行缓存。实际效果,还是不可以。
请问有办法,在中间页监听微信的取消事件么?如果能监听到的话,就可以点击取消的时候,关闭窗口。
比如,我有一个域名为 aaa.com 然后这个域名指向一个网站A,我又用 bbb.aaa.com二级域名指向另外一个独立的网站B。
然后我如果设置授权域名为 bbbb.aaa.com则 网站B的回调地址 http://bbbb.aaa.com/xxx/xxx/xxxx.php可以完成。
如果我设置授权域名为 aaa.com则网站B提示 redirect_uri参数错误。
我如果把你的提供文件get-weixin-code.html 放在 aaa.com网站A的根目录。那么接下来如何设置??
之前会先跳出微信将获取你的信息,点击确定后才跳转,现在是直接跳转跳过这一步了?
你好,开发者:
独自前行的道路是漫长的,你需要更多志同道合的伙伴。你的GitHub值得关注,你的想法值得表达,你的知识更需要分享。马上加入开源GitHub用户社区——象空网,和小伙伴们一起愉快的玩耍吧。
象空网GitHub地址:https://github.com/631320085/objnull,欢迎你贡献自己的力量。
在get-weixin-code.html中获取到了code这是没问题的,但第二次获取access_token的时候需要appid和secret,这两个都是在get-weixin-code这个项目认证后所固定的,也就是说其他系统需要写死这两个值,为何不在get-weixin-code.html中拿到code之后直接去请求access_token再把信息传递回来
使用这个方法嵌入公众号菜单栏,菜单栏1(abc.html)、菜单栏2(def.html).
使用这个方法现在打开菜单栏1就无法打开菜单栏2. 同理打开2 ,就无法打开1
多个项目都获取access token,那会不会导致一个项目获取accesstoken后另外一个项目的accesstoken 过期?
{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: aIceNAMre-34t6Ha ]"}
这个URL是对外的,跳转地址可以自定义,如果被恶意利用了怎么办?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.