新闻详细
新闻当前位置:新闻详细

微信公众号提示授权错误,请检查公众号权限和设置怎么办?——微信公众号网页授权登录公共处理方案(支持未配置的安全域名)

专业SEO运营推广——帮助您的产品找到客户

电话+V: 152079-09430 ,欢迎咨询微信公众平台网页授权在哪,[专业SEO运营],[SEO搜索引擎排名],[SEO免费推广平台],[SEO免费推广产品],[SEO免费推广网站],[让你的产品找到客户流量入口销量起飞]

一、微信公众号提示授权错误,请检查公众号权限和设置怎么办?

1、搜索微信公众平台,点击输入账号密码进入到主页里面。

2、进入以后,我们就可以看到上面会有一个授权管理的这个选项的,我们就需要点击查看了。


3、点击进入到里面以后,我们会看到上面有一个授权管理的按钮的,我们就点击进入到这个里卖弄。

4、在授权管理这个界面里面,我们就会看到这个信息了,我们就点击上面的详情的按钮就好了。

5、在详情界面里面,我们就可以点击上面的取消授权按钮了,点击取消按钮以后,就可以进行下一步的操作了。

6、然后提示我们是不是要取消授权,我们就点击确定就好了,其余的就不用管了,也不用点击了。


7、取消授权以后,我们刷新以后,就可以看到这个授权的界面没有了,说明我们的授权这是成功了。

二、订阅号怎么设置redirect

登录微信公众平台或者微信公众测试平台后台。在登录界面输入你群发微信消息的公众号账号进入后台界面。

登录后台以后,以微信公众号为例,找到图示菜单:网页服务-->网页账号-->网页授权获取用户基本信息-->修改。点击修改链接

在OAuth2.0网页授权修改授权回调页面域名。注意:这里只能录入域名或者根据下面的灰色提示录入IP地址,不能录入除域名意外的其他地址信息否则当前要解决的问题依旧。例如:test.duapp.com不能写作test.duapp.com/index.jsp

设置成功后是立刻生效的,所以可以马上在之前报错的链接上进行测试了。如果重新加载不报这个错误信息了。说明这个错误解决了。

开发过程中还遇到一个小问题:Scope参数错误或没有Scope权限。这里也顺便分享下,这基本上是一块开发遇到的问题。

网上很多说法都太老了,说是订阅号没有相关权限。但是现在订阅号和测试号其实都已经开放了这个相关的权限。所以不存在没有认证没有权限的问题。首先看下接口文档。看下截图2中的链接部分是否和自己的类型一致,一般就是这里类型和顺序没有完全按照文档走造成的错误。

微信公众号网页授权登录公共处理方案(支持未配置的安全域名)

原创2022-10-2211:06·我迷了鹿coding写在前面在日常开发过程中我们难免会遇到需要网页授权登录获取用户openId的情况,随着开发的深入我们会有很多网页需要用到用户的openId,而我们不可能每次都去写一个授权登录的接口去匹配每个网页,为了减少我们重复的工作,本篇文章将分享一个所有网页公共授权方案包括未配置的安全域名下的网页。如有不足之处,可在评论区指出。

本次使用开发语言为java。使用框架springboot。

前期配置我们都知道要想实现微信公众号的网页授权登录,需在公众号管理后台“设置与开发”->“公众号设置”->"功能设置"中设置网页授权域名,如下图所示


网页授权域配置

但是微信官方将此域名配置限制为仅可设置两个,那我们需要跳转其他域名怎么办呢,其实很简单,我们接着往下看!

授权流程大家都知道微信网页授权只需要在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(已认证服务号,默认拥有scope参数中的snsapi_base和snsapi_userinfo权限),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPIDredirect_uri=REDIRECT_URIresponse_type=codescope=SCOPEstate=STATE#wechat_redirect

需要注意的是这里的授权登录很有可能多次转发,导致code过期的情况,因此可以加入参数connect_redirect=1告诉微信仅跳转一次

REDIRECT_URI就为我们的用户确认授权后微信转发的地址我们要实现公共网页的授权登录就在这里做文章

关于scope作用域这里就不再过多地描述snsapi_base仅可以拿到户的openid,并且用户是无感知的,是静默的。snsapi_userinfo可以拿到用户的基本信息,但不是无感知的需要用户手动确认,特殊情况除外(对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知)。

实现代码/**

*公共重定向

*@paramurl

*@paramrequest

*@return

*/

@RequestMapping("/common")

publicStringauthCommonUrl(Stringurl,HttpServletRequestrequest)

try{

if(StringUtils.isEmpty(url)){

return"/error";

}

return"redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid="+environment.getProperty("wechat.appId")

+"redirect_uri="

+URLEncoder.encode(

environment.getProperty("wechat.baseRedirectUrl")+"/authcommonurl?url="+URLEncoder.encode(url,"utf-8"),

"utf-8")

+"response_type=codescope=snsapi_userinfoconnect_redirect=1state=join#wechat_redirect";

}catch(Exceptione){

logger.error("重定向发生异常->
RedirectController.authCommon:"+ParamsUtils.showParams(request),e);

return"/error";

}

}

可以看到我们将redirect_uri设置成了一个公共的获取用户信息的接口地址,然后在该地址上传入我们需要最终跳转的url,这里的url我们如果需要传递其他参数,也可以直接加在url上。这里我们只要保证redirect_uri在网页授权的安全域名下,而url任意域名都可以啦。

获取用户信息重定向url地址

/**

*授权回调转发

*@paramurl

*@paramcode

*@paramrequest

*@return

*/

@SuppressWarnings({"unchecked"})

@RequestMapping(value="/authcommonurl")

publicStringauthCommon(Stringurl,Stringcode,HttpServletRequestrequest){

HttpSessionsession=request.getSession();

try{

if(StringUtils.isEmpty(url)){

return"/error";

}

if(StringUtils.isEmpty(code)){

return"/error";

}

//首先判断session中是否存在用户信息,存在则跳过以下获取用户信息方法,不存在继续执行

StringsessionId=session.getId();

CacheObject<JSONObject>cache=MapCacheManager.getInstance().getCache(sessionId);

JSONObjectuserInfoJO=cache!=null?cache.getObject():null;

if(userInfoJO==null||StringUtils.isEmpty(userInfoJO.optString("nickname",""))){//里面为整个网页登录授权过程

//调用获取accessToken接口获取accessToken

Stringjson=HttpsUtil.httpMethodGet(getAccessTokenUrl(code),"UTF-8");

JSONObjectjsonObject=null;

try{

jsonObject=newJSONObject(json);

}catch(Exceptione){

logger.error("获取授权accesstoken转换json异常->
NotStaticAuthReturnController.authHd:"+json,e);

}

if(!jsonObject.has("access_token")){

return"/error";

}

Stringaccess_token=jsonObject.optString("access_token","");

Stringopenid=jsonObject.optString("openid","");

//得到获取用户信息的链接

//获取用户信息接口获取用户信息

StringuserInfoJson=HttpsUtil.httpMethodGet(getUserinfoUrl(access_token,openid),"UTF-8");

try{

userInfoJO=newJSONObject(userInfoJson);

}catch(JSONExceptione){

userInfoJO=newJSONObject();

logger.error("获取用户信息转换json异常->
NotStaticAuthReturnController.authcommon:"+userInfoJson,e);

}

if(!userInfoJO.has("nickname")){

return"/error";

}

userInfoJO.put("nickname",EmojiFilter.filterEmoji(userInfoJO.optString("nickname","")));

cache=newCacheObject<>();

cache.setExpires_in(7200L);

cache.setObject(userInfoJO);

MapCacheManager.getInstance().putCache(sessionId,cache);

}

//System.out.println("用户信息:"+userInfoJO.toString());//输出用户信息测试用

Stringuser_openid=userInfoJO.optString("openid","");

if(StringUtils.isEmpty(user_openid)){

return"/error";

}

return"redirect:"+url+(url.contains("?")?"":"?")+"openId="+user_openid;

}catch(Exceptione){

e.printStackTrace();

logger.error("微信授权异常->
NotStaticAuthReturnController.authCommonurl:"+ParamsUtils.showParams(request),e);

return"/error";

}

}

这里我们作用域是snsapi_userinfo有获取用户的基本信息,若无需这些信息,按需求删除代码即可。

如有问题或不足之处可在评论区指出,觉得还行的看官动动小手帮忙点个赞吧!

祝大家健健康康,每天开开心心!

【GSFAI BANK FINANCING】尊享直接对接老板

电话+V: 152079-09430

专注于SEO运营推广配套流程服务方案。为企业及个人客户提供高性价比的运营方案,解决小微企业和个人创业难题。

微信公众平台网页授权在哪
Copyright2023未知推广科技