zoukankan      html  css  js  c++  java
  • OAuth2介绍与使用

    什么是OAuth2

    OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息
    OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0

    应用场景

    第三方应用授权登录:在APP或者网页接入一些第三方应用时,时常会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录,第三方应用通过oauth2方式获取用户信息

    运作流程

    微信开发文档流程说明如下:

    1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
    
    2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
    
    3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
    

    具体的实现流程图如下:

     
    OAuth2流程图

    步骤说明(以微信授权登录为例)

    1.用户访问第三方网站,第三方应用需要用户登录验证,用户选择微信授权登录
    2.第三方应用发起微信登录授权请求

    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    
    参数是否必须说明
    appid 公众号的唯一标识
    redirect_uri 授权后重定向的回调链接地址
    response_type 返回类型,请填写code
    scope 应用授权作用域,snsapi_base 、snsapi_userinfo
    state 重定向后会带上state参数,该值会被微信原样返回,我们可以将其进行比对防止攻击或者做用户步骤1访问url保存
    wechat_redirect 直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数

    3.微信服务器拉起用户授权确认页面
    4.用户授权通过
    5.微信发送请求到第三方应用redirctUrl(第2步填写redirct_uri参数),返回凭证code与state(第2步自定义)

    http://host/redirct_uri?code=0217a07e9c194dbf539c45c266b2dcfZ&state=state
    

    6.第三方应用获取到code之后,根据code获取accessToken

    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

    返回参数

    参数说明
    access_token 接口调用凭证
    expires_in access_token接口调用凭证超时时间,单位(秒)
    refresh_token 用户刷新access_token
    openid 授权用户唯一标识
    scope 用户授权的作用域,使用逗号(,)分隔

    7.根据accessToken获取用户信息

    https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
    

    返回参数

    参数说明
    openid 普通用户的标识,对当前开发者帐号唯一
    nickname 普通用户昵称
    sex 普通用户性别,1为男性,2为女性
    province 普通用户个人资料填写的省份
    city 普通用户个人资料填写的城市
    country 国家,如中国为CN
    headimgurl 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
    privilege 用户特权信息,json数组,如微信沃卡用户为(chinaunicom)
    unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

    8.对用户信息进行处理(用户是否第一次登录,保存用户信息,自定义token,session处理等)
    9.返回结果(步骤1对应url或者重定向到首页)

    至此,微信OAuth2授权登录过程结束
    具体细节请参考微信开发平台-移动应用授权登录

  • 相关阅读:
    *Convert Sorted Array to Binary Search Tree
    *Count Complete Tree Nodes
    *Binary Tree Paths
    Invert Binary Tree
    *Kth Smallest Element in a BST
    **Lowest Common Ancestor of Two Nodes in a Binary Tree
    Lowest Common Ancestor of a Binary Search Tree
    *Sum root to leaf number
    subversion javahl
    mongodb从来没有说它写成功了。
  • 原文地址:https://www.cnblogs.com/karmapeng/p/12312272.html
Copyright © 2011-2022 走看看