我正在尝试制作一个服务器应用程序来定期从我自己的GA帐户中提取Google Analytics数据.请注意,它是一个访问我自己的数据的个人服务器端应用程序,即没有最终用户访问此应用程序.
因此,我在Google API控制台中将我的应用程序注册为服务应用程序,该应用程序为我提供了客户端ID和私钥.据我所知,服务应用程序不使用应用程序密钥和重定向URL,因为此服务器到服务器身份验证流程中没有最终用户.实际上,Google API控制台没有给我任何机密,也没有提示我提供重定向网址.
不幸的是,我无法弄清楚如何在Google的PHP客户端API中验证我的服务应用程序.有关于验证的Web应用程序广泛的文件与最终用户.
Google的文档表明,可以通过使用私钥对JWT请求进行签名来验证服务器到服务器.我只是无法弄清楚如何在PHP客户端API中做(虽然我浏览了源代码,但肯定有一个脚本用私钥签署请求.)
我在这里错过了什么吗?如何使用我的私钥和Google PHP客户端API对服务应用程序执行身份验证?
编辑清晰
我已经拼命想要自己解决这个问题,并且不想带着这个问题来解决这个问题,但是我的智慧结束了(不是因为api/oauth docs).
我正在使用PHP,我试图通过在方法上使用REST 来避免使用Google_Client和AnalyticsService类analytics.data.ga.get.
STEP #1: Create an API Project for a Web Application
我转到api控制台并使用分析服务创建一个项目并获取OAuth客户端ID和密钥.
我的印象是我可以为已安装的应用程序或Web应用程序创建客户端ID,因为我正在手动进行初始令牌握手.如果我错了,请纠正我.
我为Web应用程序创建了一个客户端ID,并获取了我的客户端ID xxxxxxxxxxxxxx.apps.googleusercontent.com,客户端密码yyyyyyyyyyyyyyy和我的重定向URIhttp://localhost:9002
STEP #2: Request initial API access
我输入这个链接; https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxxxxxxxxxxxxx.apps.googleusercontent.com&redirect_uri=http://localhost:9002&scope=https://www.googleapis.com/auth/analytics.readonly&access_type=offline
这access_type=offline是因为我正在使用REST,并且不希望"用户"(我自己)每次需要刷新令牌时手动处理重定向/弹出窗口.
上述请求返回 http://localhost:9002?code=4/KModH0K_xxxxxxxxxxxxxxxxxxx9Iw.gikOaYRDWywTshQV0ieZDArCOX8XdwI
代码4/KModH0K_xxxxxxxxxxxxxxxxxxx9Iw.gikOaYRDWywTshQV0ieZDArCOX8XdwI是我的许可,可以请求API令牌.
STEP #3: Request First Token
由于我公司的IT问题,我被迫使用PHP 5.2.17并且我无法访问PHP cURL,因此我正在使用file_get_contents和stream_context_create.
使用PHP请求第一个令牌file_get_contents();
$opts = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' …Run Code Online (Sandbox Code Playgroud)