weixin_41705788 2023-05-24 18:35 采纳率: 0%
浏览 74
已结题

公众号迁移成功后,无法获取用户的OPENID 昵称 性别等信息,没有迁移前好好的,用的ASP,现在可以提示要获取,但是又立马错误,请看看!

公众号迁移成功后,无法获取用户的OPENID 昵称 性别等信息。
用的ASP,获取的时候会提示要获取头像等信息,然后就提示:获取 access_token 时发生错误,错误信息:{"errcode":41008,"errmsg":"missing code, rid: 646dd077-3a51413d-25cbdf70"}。
ASP 代码为:
from.wx.asp:

<!--#include file="WxApi_jbt.asp"-->
Dim Wx, url
SET Wx = New WxAPI
    url = Wx.GetAuthorization_Code()
    Response.Redirect(url)
Set Wx=Nothing


wxapi_jbt.asp

```html
<script language="jscript" runat="server">
function getjson(str){
        try{
           eval("var jsonStr = (" + str + ")");
        }catch(ex){
           var jsonStr = null;
        }
        return jsonStr;
}
</script>
<%
Class WxAPI
    Private APPID
    Private APPSECRET
    Private CALLBACK_URL
    Private SCOPE
        
    Private Sub Class_Initialize      
        APPID = "wx76fdf0fcf9e60c80"
       APPSECRET = "741319ddeb0003f35322cf9b1a34b9582c"
        CALLBACK_URL = "http://www.zkkae.net/membership/wx_user_jbt.asp"
        SCOPE ="snsapi_userinfo" 
        'SCOPE ="snsapi_base"
                                                
    End Sub
   Private Function RequestUrl(url)
        Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
        XmlObj.open "GET",url, false
        XmlObj.send
        If XmlObj.Readystate=4 Then
           RequestUrl = XmlObj.responseText
        Else
           Response.Write("xmlhttp请求超时!") 
           Response.End()
        End If
        Set XmlObj = nothing
    End Function
    
    
    Private Function CheckData(data,str)
        If Instr(data,str)>0 Then
           CheckData = True
        Else
           CheckData = False
        End If
    End Function
    
    
    '生成登录地址
    Public Function GetAuthorization_Code()
        Dim url, params
        url = "https://open.weixin.qq.com/connect/oauth2/authorize"
        params = "appid="&APPID
        params = params & "&redirect_uri=" & server.URLEncode(CALLBACK_URL)
        params = params & "&response_type=code"
        params = params & "&scope="&SCOPE
        params = params & "&state=123#wechat_redirect"
        url = url & "?" & params
        GetAuthorization_Code = (url)
    End Function
    

'https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URL&response_type=code&scope=snsapi_base&state=#wechat_redirect

    Public Function GetAccess_Token(sCode)
        Dim url, params,Temp
        Url="https://api.weixin.qq.com/sns/oauth2/access_token"
        params = "appid="&APPID
        params = params & "&secret=" & APPSECRET
        params = params & "&code=" & sCode
        params = params & "&grant_type=authorization_code"
        url = Url & "?" & params
        Temp=RequestUrl(url)
        If CheckData(Temp,"access_token") = True Then
           set obj = getjson(Temp)
           if isobject(obj) Then
               GetAccess_Token = Array(obj.access_token,obj.openid)
           End If
          set obj = Nothing
        Else
           Response.Write("获取 access_token 时发生错误,错误信息:"&Temp) 
           Response.End()
        End If
    End Function
    
    Public Function CheckLogin()
        Dim Code,mState
        Session("Code")=Trim(Request.QueryString("code"))
        If Code<>"" Then
            CheckLogin = True
        Else
            CheckLogin = False
        End If
    End Function
    
    
    
    Public Function GetUserInfo()
        Dim url, params, result
        url = "https://api.weixin.qq.com/sns/userinfo?"
        'url = "api.weixin.qq.com/cgi-bin/user/info?"
        params = params & "&access_token=" & Access_Token
        params = params & "&openid=" & Openid
        params = params & "&lang=zh_CN"
        url = url & "?" & params
        Temp = RequestUrl(url)
        If CheckData(Temp,"nickname") = False Then
            set obj = getjson(Temp)
           if isobject(obj) Then
               ret = obj.errcode
               msg = obj.errmsg
           End If
          set obj = Nothing
           Response.Write("获取用户信息时发生错误,错误代码:"&ret&" , 错误描述:"&msg) 
           Response.End()
        End If
        GetUserInfo = Temp
        
    End Function

    Public Function GetUserName(json)
        Dim nickname,sex,headimgurl,obj
        set obj = getjson(json)
           if isobject(obj) Then
               nickname = obj.nickname
               sex = obj.sex
               headimgurl = obj.headimgurl
           End If
          set obj = Nothing
        GetUserName = Array(nickname,sex,headimgurl)
    End Function
End Class
%>


wx_user.jbt.asp

<!--#include file="WxApi_jbt.asp"-->
<!--#include file="born_20txt.asp"-->
<!--#include file="./reg/md5.asp"-->

<%


'获得用户真实IP
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") 



session.Timeout = 999
Server.ScriptTimeOut=999
Response.Charset = "utf-8"
Code = Trim(Request.QueryString("code"))
SET Wx = New WxAPI
      TokenArray = Wx.GetAccess_Token(Code)
       Access_Token=TokenArray(0)
       Openid=TokenArray(1)
       subs = TokenArray(2)
    'End If

     UserInfo=Wx.GetUserInfo()
    nickname = Wx.GetUserName(UserInfo)(0)
    sex = Wx.GetUserName(UserInfo)(1)
    icon = Wx.GetUserName(UserInfo)(2)
    city = Wx.GetUserName(UserInfo)(3)

Set Wx=Nothing
If sex="1" then
   sex = "男"
Else
   sex = "女"
End If



set rs=server.createobject("adodb.recordset") 
sql="select * from hy_jbt_0063 where hy_wx ='"&openid&"'"
rs.open sql,conn,1,3
if rs.eof then
rs.close

Session.Contents("wx_oi_notreg_jbt") = Openid
Session.Contents("wx_nickname_notreg_jbt") = nickname
Session.Contents("wx_sex_jbt") = sex
Session.Contents("wx_icon_jbt") = icon

response.end

else

hy_card = rs("hy_card_0063")
hy_tel = rs("hy_tel_0063")

rs("hy_last_date_0063") = now()
rs("hy_wx_sex_0063") = sex
rs("hy_wx_img_0063") = icon
rs("hy_wx_name_0063") = nickname
rs.update

rs.close


set rs=server.createobject("adodb.recordset") 
exec="select * from hy_login_record_0063"
rs.open exec,conn,1,3
rs.addnew
rs("hy_tel_0063") = hy_tel
rs("hy_wx_oi_0063") = Openid
rs("login_time_0063") = now()
rs("login_ip_0063") = userip
rs.update
rs.close





Session.Contents("from_wx") = md5(Openid & hy_hash)
Session.Contents("mem_wx_oi_jbt") = Openid
Response.Cookies("tel")=hy_tel
Response.Cookies("tel").expires = DateAdd("h", 1, Now())

'response.write Session.Contents("from_wx")
'response.end



response.Redirect("./")
response.end

end if

%>

请帮忙看看,怎么办?

  • 写回答

10条回答 默认 最新

  • CSDN专家-sinJack 2023-05-25 08:30
    关注
    获得3.00元问题酬金

    这个错误提示是缺少授权码(code),可能是你在获取access token时没有传递正确的授权码。
    获取access token时是否传递了正确的授权码。
    同时,也可以检查一下你的应用是否已经被用户授权,如果没有被授权,需要先引导用户进行授权操作。
    也可能是appid或者secret不对,根据errcode去开发者平台看下对应的是什么错误就知道了

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 创建了问题 5月24日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度