我有一个Wordpress cron脚本,它以固定的间隔调用OAuth2api。OAuth2授权需要用户访问网页;允许";按钮进行授权,这在非交互式环境中是不可能的。我想知道处理这个问题的标准方法。我希望我能把client_id和client_secret放在php脚本中,然后全部完成。毕竟,用户和脚本开发人员都是一样的:我自己,应该不需要做授权。
您可以使用file_get_contents、$http_response_header和stream_context_create使用pkce模拟完整的身份验证代码流。
脚本的步骤如下:
- 构建
authorization_url
并获取请求 - 检测到重定向到登录页面,从html中grep
csrf token
- 发布
username
、password
和csrf token
并检测重定向url以授权页面 - 解析authorize页面,grep
csrf token
(如果有(并发布以接受权限 - 检测回调url并从get参数中获取
code
- 向
token_url
发布code
和其他要求,并对接收到的令牌进行解码
我为OpenId Connect项目创建了这样的脚本,但它没有登录和授权页面。你可以在这里找到一个例子:https://github.com/ronvanderheijden/openid-connect/blob/main/example/get_tokens