微信公众号第三方开发之四回调url中获取授权方的授权信息以及基本信息

来源:互联网 发布:日本转区软件 编辑:程序博客网 时间:2024/04/30 23:54

      回顾上一章节将到的授权成功,微信上的提醒标志:


      然后微信服务器回调你设定好的回调地址。在附带上授权码和过期时间。那么在里面我们具体怎么来查找获取授权公众号的基本信息呢?

 

      首先官网上提及:


      通过授权码和自己接口调用凭据换去授权方的授权信息【其实就是接下来调用公众号各项api的授权凭据token和用来刷新过期凭据的token】。

 

大致步骤:

      1、通过微信附带到回调地址的授权码+第二章提及的【component_access_token】来换取授权信息

      2、通过授权公众号的access_token去调用微信api,这期间要注意监测token的有效期

 

      接下来提及的只是参考,具体业务请以自己的需求为准!!

      首先获取授权信息,然后查找自己表里是否是以前授权过的,是的话,直接更改标识状态,不是重新插入一条语句。当然接下去的获取授权方的基本信息也是一样的原理。

 

      至于刷新accessToken,原理和前面讲的获取ComponentAccessToken是一致的,只不过这里的区别是,如果没有找到用户记录返回错误信息了。具体代码如下:

      privatestaticstringget_auth_access_token()

        {

            if(wid =="0")

            {

               var session = System.Web.HttpContext.Current.Session["wid"];

               if (session !=null)

               {

                   wid = session.ToString().Trim();

               }

               return"用户数据丢失,请尝试重新进入!";

            }

 

            stringtoken =string.Empty;

            string sql =string.Empty;

           sql ="select top 1 id, auth_appid, auth_access_token,auth_refresh_token, addtime from [WX_weixinOpen_authInfo] where wx_id='"+ wid +"' order by addtime desc";

            DataTable aDt = DaCommon.DbHelperSQL.Query(sql).Tables[0];

            if(aDt.Rows.Count > 0)

            {

               DateTime time =Convert.ToDateTime(aDt.Rows[0]["addtime"]);

               token = aDt.Rows[0]["auth_access_token"].ToString();

               string auth_appid = aDt.Rows[0]["auth_appid"].ToString();

               string refreshToken=aDt.Rows[0]["auth_refresh_token"].ToString();

               if (time <DateTime.Now)//过期了重新获取

               {

                   ResponseAuthorizerToken atoken=InterfaceApi.Refresh_authorizer_token(Golbal_Component_accessToken,auth_appid, refreshToken);

                   token = atoken.authorizer_access_token;

                   time=DateTime.Now.AddSeconds(atoken.expires_in -1800);//重新设定时间

                   sql ="update[WX_weixinOpen_authInfo] set addtime='"+time+"' ";

                   if (!string.IsNullOrEmpty(token))

                   {

                       sql +=", auth_access_token='" + token +"'";

                   }                   

                   if (!string.IsNullOrEmpty(atoken.authorizer_refresh_token))

                   {

                       sql +=", auth_refresh_token='" +atoken.authorizer_refresh_token +"'";

                   }

                   sql +=" where auth_appid='" +auth_appid +"'";

                   DaCommon.DbHelperSQL.ExecuteSql(sql);

               }

            }

            returntoken;

        }


      最终返回的结果如下:


ps::后来测试发现回调地址只能带一个参数,2个以上会被微信砍掉的!!!如下图:

日志观察:


0 1
原创粉丝点击