首页 > 其他分享 >账户授权管理

账户授权管理

时间:2023-05-27 17:24:16浏览次数:54  
标签:COMMENT VARCHAR 管理 账户 token 授权 NULL id

1、前言

本文只包括通用流程概括,不涉及具体操作流程;

国内的头条、腾讯等基本都是 Oauth2.0 授权模式;

授权管理大致流程

  1. 申请开发者应用;
  2. 准备跳转链接,获取授权的 auth_code;
  3. 通过auth_code获取令牌( access_token、refresh_token) 等;
  4. 定时刷新令牌;

引用巨量引擎(头条)的授权流程图

image

2、申请开发者应用

大多数情况下,申请一个通用的开发者应用接受其他不同主体的授权;对于部分需要特殊操作的账户,则另外申请应用然后授权;

开发者应用所属主体优劣对比:

》第三方主体:

  • 优势:只需申请一次开发者应用,可以同时管理多个公司(主体)的账号;
  • 劣势:不支持部分涉及敏感操作接口(如头条抖音评论操作、视频素材的url等);

》同广告主账户主体:

  • 优势:基本所有接口都可操作;
  • 劣势:如果有多个公司(主体)则需要逐个去申请开发者应用;

对于不同媒体、不同主体,开发者应用管理也是需要考虑的问题,可以考虑存进数据库中:

点击查看代码:开发者应用管理表.sql
CREATE TABLE `mk`.`develop_app` (
	`id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
	`media_id` VARCHAR(30) NOT NULL COMMENT '媒体ID:toutiao=头条、gdt=广点通',
	`company` VARCHAR(50) NOT NULL COMMENT '所属公司/主体',
	`app_id` VARCHAR(100) NOT NULL COMMENT '应用ID',
	`app_secret` VARCHAR(100) NOT NULL COMMENT '应用密钥',
	`app_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '应用名称',
	`scop` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '授权范围',
	`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注'
	`uptime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

	PRIMARY KEY(`id`),
	UNIQUE KEY (`media_id`, `company`, `app_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '开发者应用表';

3、跳转/回调链接

基本操作流程:MK平台点击授权按钮 -> 跳转服务器生成链接并重定向到媒体授权页面 -> 进行授权并确认,带上auth_code并跳转回调链接 -> 获取令牌等;

这里主要涉及自建MK平台两个接口:

  1. 生成授权跳转链接;
  2. 接收授权后code回调接口;

一般授权要考虑:媒体和主体,如果多个应用也可以直接指定,所以前端链接,可以如下:

https://xxx.com/auth/link?media_id=xxx&company=xxx&app_id=xxx

获取对应应用信息,生成跳转url,在重定向即可(下面用头条的举例),redirect_uri 需要填入我们的回调地址,接受code信息

https://open.oceanengine.com/audit/oauth.html?app_id=XXX&state=xxx&scope=xxx&redirect_uri=xxx

回调地址(这个地址需要提前设计好,申请应用的时候需要填入),auth_code 为媒体回调的附加参数

https://xxx.com/auth/token?media_id=xxx&company=xxx&auth_code=xxx

拿到授权码之后就可以获取令牌了

4、获取/刷新令牌

令牌、以及刷新令牌都是有时间限制,一般获取的时候,会返回有效时间;需要写脚本定时刷新;

  1. 根据上面的授权码, 调用媒体的接口,获取令牌;
  2. 判断授权类型,如果是管家账户,则再调接口获取旗下所有账户;
  3. 获取每个账号信息,存入数据库中;
点击查看代码:广告账户管理.sql
CREATE TABLE `mk`.`ad_users` (
	`id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
	`media_id` VARCHAR(30) NOT NULL COMMENT '媒体ID:toutiao=头条、gdt=广点通',
	`company` VARCHAR(50) NOT NULL COMMENT '所属公司/主体',
	`advertiser_id` VARCHAR(100) NOT NULL COMMENT '账户ID',
	`advertiser_name` VARCHAR(100) NOT NULL COMMENT '账户名',
	`access_token` VARCHAR(250) NOT NULL COMMENT '令牌access_token',
	`refresh_token` VARCHAR(250) NOT NULL COMMENT '刷新令牌refresh_token',
	`access_token_expires_in` INT(11) DEFAULT 0 COMMENT 'access_token过期时间',
	`refresh_token_expires_in` INT(11) DEFAULT 0 COMMENT ' refresh_token过期时间',
	`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注'
	`uptime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

	PRIMARY KEY(`id`),
	UNIQUE KEY (`media_id`, `company`, `advertiser_id`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '广告账户管理';

标签:COMMENT,VARCHAR,管理,账户,token,授权,NULL,id
From: https://www.cnblogs.com/reader/p/17436884.html

相关文章

  • 教程 | 免费创建苹果ios账户,注册美区id的完整操作方法;有个属于自己能无限下载应用Appl
    就针对使用苹果iPhone的用户而言拥有一个美国区的账户ID无疑会带来很多便利。1、可以下载国内Applestore里无法下载的大量应用。2、避免了去tb购买账号时可能出现的麻烦和不稳定情况。本文的重点在于解决一个问题:可以在不需要使用科学上网或付费的情况下,使用自己的国内邮箱和国内......
  • 未授权访问漏洞检测工具(CVE-2023-29922)
    ===================================免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。0x01工具介绍PowerJob<=4.3.2......
  • 源代码管理工具:提升团队协作与开发效率的利器
    在软件开发领域,源代码管理是一项至关重要的任务。随着团队规模的扩大和项目复杂性的增加,有效地管理和协调代码的变更变得尤为重要。为了应对这一挑战,源代码管理工具应运而生。本文将介绍源代码管理工具的概念、作用以及一些流行的工具,以帮助读者理解并选择适合自己团队的工具。......
  • 源代码管理工具——GitHub
    GitHub——敏捷开发,CI/CD的倡导者和受益者1.简介GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。Github拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库。2.发展历程GitHub平台于2007年10月1日开始开发,由GitHu......
  • 简单商品后台管理系统-应用MVC和AJAX,使用Bootstrap
    一个商品后台管理系统-应用了MVC三层设计模式以及AJAX技术,使用Bootstrap模板;是我用于练习Ajax的增删改查写的一个小系统,很简易,但是有助于理解mvc设计模式,并且简单条理清晰使得它是一个好的练习项目;效果展示: 代码部分:index.html<html><head><title>管理系统</titl......
  • 物业收费管理解决方案
    物业收费管理解决方案极致收费管理模块对物业服务公司向客户收取各种费用的活动进行管理,所有收费项目、收费标准、损耗分摊、违约金计算等都可采用用户自定义的方式,满足物业服务公司灵活多变的收费管理。应收费用的类型包括常规费用、抄表费用、临时费用;缴费方式包括现金缴款、......
  • gnmi 基于grpc 的网络管理接口
    网络自动化是这几年对于网络管理比较重要的话题,openconfig就是一个开放组织,gnmi是基于grpc提供的网络管理接口,对于需要开发网络自动化的应用是值得参考使用的参考资料https://github.com/openconfig/gnmihttp://www.openconfig.net/......
  • 在Directory.Build.props中用全局变量来管理包的版本号
    1、顶级目录下放置Directory.Build.props文件为每个软件产品,分配一块独立的windows盘符,在根目录下放置名为Directory.Build.props的文件即可。这个文件名是特定的,必须叫这个。如果公司有很多产品,引用的同一个包的版本可能是不同的,那么在磁盘根目录下就不要有Directory.Build.props......
  • 文件管理类 FileUtils 打印工具LogUtil
    FileUtilsobjectFileUtils{constvalSIZETYPE_B=1//获取文件大小单位为B的double值constvalSIZETYPE_KB=2//获取文件大小单位为KB的double值constvalSIZETYPE_MB=3//获取文件大小单位为MB的double值constvalSIZETYPE_GB=4//获取......
  • linux 内存管理
    内存管理的目标外存是程序存储的地方,内存是进程运行的地方。内存管理的目标除了实现进程之间的隔离、进程与内核之间的隔离、减少物理内存并发使用的数量之外,还有以下几个目标。1、减少内存碎片,包括外部碎片和内部碎片。外部碎片是指还在内存分配器中的内存,但是由于比较分散,无......