baidu/baiduads-sdk

为什么一定要手动干预,oauth2.0为什么不能全部走服务器api调用?

cnmade opened this issue · 15 comments

为什么一定要手动干预,oauth2.0为什么不能全部走服务器api调用?
image

为什么一定要人工去点授权,这一步是阻碍全部自动化的硬伤。

就不能用更友好的方式,实现自动化api授权码?

你们学一下github, google, aws, aliyun, 这些厂商的成熟方案啊。

他们一般是生成一个app key, 一个token, 就可以安全调用api接口。

没你们这麽多破事。。

为什么一定要手动干预,oauth2.0为什么不能全部走服务器api调用? image

为什么一定要人工去点授权,这一步是阻碍全部自动化的硬伤。

就不能用更友好的方式,实现自动化api授权码?

你们学一下github, google, aws, aliyun, 这些厂商的成熟方案啊。

他们一般是生成一个app key, 一个token, 就可以安全调用api接口。

没你们这麽多破事。。

你好!感谢对baiduads-sdk的关注和使用!

当前百度营销API支持的OAuth 2.0授权方式,适用于开发者开发应用提供给第三方推广用户使用,该应用通过API操作的推广资源,拥有者是推广用户,而不是开发者或者这个应用,所以在使用过程中需要推广用户的显示授权才能访问这些资源(截图红框中的过程)。
当前实现的OAuth 2.0授权方式对于自操作场景(开发者既是应用开发方,也是推广用户)授权可以优化,需要实现OAuth 2.0的Client Credentials 模式去支持,我们也在计划升级中。

你说的自动化需求场景,如果是我说的自操作场景,请耐心等待我们的升级;如果是其他场景,请提供详细的说明。

另外,github, google, aws, aliyun等业界厂商在认证授权上,有两种常用的方式:HMAC(AK/SK)和OAuth 2.0。HMAC适用于M2M场景(Machine 2 Machine),解决的是API访问时的身份认证,各大厂商访问云上资源时都采用这种方式;OAuth 2.0适用于U2M(User 2 Machine)场景,主要解决访问授权的问题,开发者开发应用给用户使用都采用这种方式,比如淘宝卖家工具服务等。 百度营销API采用OAuth 2.0主要是解决访问推广资源时的授权问题。

你说的“生成一个app key,一个token就可以安全调用api接口”,如果是指HMAC方式,那么不太适合百度营销API的使用场景。

我来支持一下官方, "人工去点授权" 跟 "人工复制AK/SK",不都是要人工吗?
开发者没有推广账户所有权,要账户管理员同意授权,这是必然的。就算是同一家公司,开发者不也得先找推广的同学要个key之类的,不然想改就改了。
这套oAuth不只百度在用,抖音、广点通之类也都在用

我想了一下,这位同学应该是吐槽必须对外有一个接收的网址接口,这种对外接口确实不是每个开发方都有对外,例如数据部门的

2022年底都要实现oath授权,之前旧的不行了。这的确是一个大问题,必须使用在线操作授权后才能继续下面的操作,这样只能让程序一直更新token,中间要是中断,必须人工再授权一次,这的确相当大的不方便。

这个可能是为了安全考虑,但实际开发中,这种安全只是浪费人力,增加开发难度。一般的开发者哪有懂这么多的。

这种改变的确增加了难度。 无法通过python脚本直接获取accesstoken,必须人工打开授权链接,获得authcode才可以。

希望后续尽快增加其它授权方式。

image
真对不起,百度,把你给惹毛了。。
还删评论,关issue。

真服了。你们改进服务,用户的心不就回来了吗?

强权霸凌是吗?

image 真对不起,百度,把你给惹毛了。。 还删评论,关issue。

真服了。你们改进服务,用户的心不就回来了吗?

强权霸凌是吗?

请注意言语规范,这里只是一个开源项目社区,也不是什么百度官方,删除comment主要是『言语攻击倾向』,然后解决方案在之前的comment已经给出,所以该issue就先行关闭,如果您觉得这个解决方案不符合您的预期,可以考虑再开新的issue讨论话题,但请不要『情绪激动』夹带『言语攻击』。希望大家心情平静的讨论技术问题。

我猜测当前反馈的核心问题可能是:accessToken过期后需要人工操作获取新的accessToken;期望是能实现accessToken自动续期,或者过期后能通过程序自动化获取新的accessToken。

当前OAuth流程的正常情况下,开发者实现accessToken自动更新(程序自动化,无需人工)的过程如下:

  1. 【人工操作】获取accessToken 和 refreshToken。accessToken有效期1天,refreshToken有效期30天
  2. 当accessToken过期后,使用refreshToken接口换取新的 accessToken和refreshToken
  3. 每次使用新的refreshToken,循环第2步

当且仅当refreshToken过期/失效的情况下,需要人工介入获取新的accessToken 和 refreshToken,场景如下:

  1. 访问的推广账号解除授权:推广用户人工操作
  2. OAuth应用授权重置:开发者后台人工操作
  3. accessToken过期30天内没有调用refreshToken接口换取新的
  4. 营销API后台人工干预导致过期/失效:概率极小,一般基于安全风险控制的目的进行

针对当前反馈的体验问题,SDK提供方会尽快进行一些优化来提升开发者体验,同时也需要开发者进行一些协助:

  1. 【开发者】若出现refreshToken非预期的过期/失效,可以带上必要的请求信息在如流交流群(群号:5995216)或者在商业开发者中心 进行问题反馈,我们会有值班人进行排查跟进
  2. 【SDK提供方】将当前OAuth流程下accessToken自动更新过程内嵌到SDK中,在refreshToken不过期的情况下,尽量让开发者不感知accessToken的自动换新过程。

我说垃圾的设计,是指这个设计本身。如果你非要对号入座,那真的是太棒了。
一个好的设计,我会给他点赞。
一个不好的垃圾,它就是一个垃圾。

情绪激动因为 你并没有解决用户的痛点,还要让用户闭嘴,别叫唤。

什么言语攻击,你要不要体验一下言语攻击,真正的言语攻击是什么样的?

我把原文贴出来,让所有人一起来评论一下,我攻击了什么?

image

你们自己玻璃心,还要赖用户?

互联网是有记忆的。你有本事别删,让网友评论,我攻击了谁?我冒犯了谁?

leadscloud 该同学所描述的场景,正是我们日常的痛苦所在。 你们不反省自己能不能为用户提供更优质的服务,还在这里高傲的指责用户,有什么意义?
能让你们提升业绩吗?能让用户解放双手吗?
一点意义都没有。

leadscloud 该同学所描述的场景,正是我们日常的痛苦所在。 你们不反省自己能不能为用户提供更优质的服务,还在这里高傲的指责用户,有什么意义? 能让你们提升业绩吗?能让用户解放双手吗? 一点意义都没有。

image

对于广告主自身就是开发者的情况,会有个优化,这个优化在排期去做(涉及百度账户系统的升级,百度账户系统升级需要较长的开发周期),这个优化是类似“生成一个app key,一个token就可以安全调用api接口”的效果。

互联网是有记忆的。你有本事别删,让网友评论,我攻击了谁?我冒犯了谁?

没问题,可以不删除『百度太蠢』『垃圾』字样的文字。到底太蠢和垃圾指的是谁,大家自行理解。

@cnmade @leadscloud @Violam Oauth增加了自授权模式,请参考https://dev2.baidu.com/content?sceneType=0&pageId=104467&nodeId=1355&subhead= 的 『OAuth2.0对接有没有简单方式?』章节的说明。

非常感谢,相当牛逼