zoukankan      html  css  js  c++  java
  • h5微信接入授权登录

      https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
      • code
        • code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未使用自动过期
        • 存在:已授权
        • 不存在:未授权,则跳转微信授权链接,
      • appid(必填)
        • 公众号的唯一标识
      • redirect_url(必填)
        • 授权成功后跳转的地址,微信会跳转到改链接,并通过?的形式拼接code,请使用urlEncode对链接进行处理
      • response_type(必填)
        • 返回类型,请填写code
      • scope(必填)
        • 应用授权作用域
          • 静默授权(scope=snsapi_base):不弹出授权页面,直接跳转,只能获取用户openid
          • 非静默授权(scope=snsapi_userinfo):弹出授权页面,可通过openid拿到昵称、性别、所在地,即使在未关注的情况下,只要用户授权,也能获取其信息。
      • state
        • 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
      • #wechat_redirect(必填)
        • 无论直接打开还是做页面302重定向时,必须带此参数
      • 提示
        • 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

        • 由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问。

        • 跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。

    • 步骤
      • 用户同意授权,获取code
      • 通过code换区网页授权access_token
        • 获取access_token
          • https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
          •    参数
            • appid(必填,同上)
            • secret(必填)
              • 公众号的appsecret
            • code(必填)
              • 填写第一步获取的code参数
            • grant_type(必填)
              • 填写为authorization_code
        •  正确返回的json数据包
          {
            "access_token":"ACCESS_TOKEN",
            "expires_in":7200,
            "refresh_token":"REFRESH_TOKEN",
            "openid":"OPENID",
            "scope":"SCOPE" 
          }
          • 参数
            • access_toke
              • 网页授权接口调用凭证:此access_token与基础支持的access_token不同
            • expires_in
              • 调用凭证超时时间,单位(秒)
            • refresh_token
              • 用户刷新access_token
            • openid
              • 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的页面,也会产生一个用户和公众号唯一的OpenId
            • scope
              • 用户授权的作用于,使用逗号(,)分隔
        •  错误返回的json数据包
          {"errcode":40029,"errmsg":"invalid code"}
      • 刷新access_token(如果需要)
        • 较短有效期,当超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效后,需要用户重新授权
        • 请求
               https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
          • 参数
            • appid(必填,同上)
            • grant_type(必填)
              • 填写为refresh_token
            • refresh_token(必填)
              • 填写通过access_token获取到的refresh_token参数
          • 正确返回的json数据包
            { 
              "access_token":"ACCESS_TOKEN",
              "expires_in":7200,
              "refresh_token":"REFRESH_TOKEN",
              "openid":"OPENID",
              "scope":"SCOPE" 
            }
            • 参数(参数介绍,同上)
          • 错误返回的json数据包
            {"errcode":40029,"errmsg":"invalid code"}
      • 拉去用户信息(需要scope为snsapi_userinfo)

     

            https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
        • 参数
          • aceess_token(同上)
          • openid(同上)
          • lang
            • 返回国家地区语言版本,zh_CN简体,zh_TW繁体,en英语
        • 正确返回的json数据包
          {   
            "openid":" OPENID",
            " nickname": NICKNAME,
            "sex":"1",
            "province":"PROVINCE",
            "city":"CITY",
            "country":"COUNTRY",
            "headimgurl":       "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
            "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
            "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
          }
          • 参数
            • openid(同上)
            • nickname
              • 用户昵称
            • sex
              • 用户性别,1=>男,2=>女,0=>未知
            • province
              • 用户个人资料填写的省份
            • city
              • 普通用户个人资料填写的城市
            • country
              • 国家,如中国为CN
            • headimgurl
              • 用户头像
            • privilege
              • 用户特权信息
            • unionid
              • 只有在用户将公众号绑定到微信开放平台后,才会出现该字段
        • 错误返回的json数据包
          {"errcode":40003,"errmsg":" invalid openid "}
    • 附:检验授权凭证(access_token)是否有效
        https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
      • 参数
        • access_token(同上)
        • openid(同上)
      • 正确返回的json数据包
        { "errcode":0,"errmsg":"ok"}
      • 错误返回的json数据包
        { "errcode":40003,"errmsg":"invalid openid"}

     

  • 相关阅读:
    自学MVC(十二):MVC视频项目小结
    Silverlight MMORPG WebGame游戏设计(一)一个游戏爱好者的webGame之路
    自学MVC(十四):如何在view里用表格展示json数组
    自学MVC(十):自己写的通用的JS分页控件2009年05月27日
    自学MVC(八):在jquery里让DIV随鼠标移动2009年05月15日
    自学MVC(十一):用js把siverlight播放器加到页面里2009年05月30日
    自学MVC(十三):MVC视频项目的小Tipps
    Silverlight MMORPG WebGame游戏设计(二)通讯协议之惑
    安卓客户端连接服务器调用数据库方法
    第一次ADO.Net连接SQLserver测试时出现的问题传智播客的ADO例子
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/12144031.html
Copyright © 2011-2022 走看看