• 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"}

     

  • 相关阅读:
    June. 26th 2018, Week 26th. Tuesday
    June. 25th 2018, Week 26th. Monday
    June. 24th 2018, Week 26th. Sunday
    June. 23rd 2018, Week 25th. Saturday
    June. 22 2018, Week 25th. Friday
    June. 21 2018, Week 25th. Thursday
    June. 20 2018, Week 25th. Wednesday
    【2018.10.11 C与C++基础】C Preprocessor的功能及缺陷(草稿)
    June.19 2018, Week 25th Tuesday
    June 18. 2018, Week 25th. Monday
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/12144031.html
Copyright © 2020-2023  润新知