You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用通过开发者邮箱访问Google Developer API及Token生成疑问

理解Google Android Publisher OAuth2授权流程:从授权码到Token

我来帮你把这个OAuth2授权的流程掰碎了讲清楚——你已经搞定Client ID了,剩下的就是走授权码流程来拿到能调用API的Token,这是服务端/后台应用访问Google API的标准玩法,我一步步给你拆解:

一、先搞懂你提到的授权URL里的每个参数

你贴的那个授权URL其实是用来触发用户授权的核心入口,每个参数都不能乱填:

  • scope=https://www.googleapis.com/auth/androidpublisher:指定你的应用要获取的权限,这个是Android Publisher API必须的,不能改
  • response_type=code:告诉Google你要返回授权码(authorization code),而不是直接返回Token(这是安全的做法,授权码只能用一次)
  • access_type=offline:这个很关键!它表示你需要刷新Token(refresh_token),因为access_token有效期只有1小时,有了refresh_token就能在后台自动刷新,不用每次都让用户手动授权
  • redirect_uri=...:这个必须和你创建Client ID时在Google Cloud控制台里填的完全一致(包括http/https、结尾的斜杠都不能差)。如果是本地测试,你可以填http://localhost:8080或者桌面应用专用的urn:ietf:wg:oauth:2.0:oob(这种会让Google直接在页面显示授权码,你手动复制就行)

二、获取授权码的步骤

  1. 把你的Client ID加到授权URL里,拼成完整的链接:
    https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID
    
  2. 用浏览器打开这个链接,用你的开发者邮箱账号登录(必须是拥有Android Publisher权限的账号)
  3. 页面会提示你授权你的应用访问Android Publisher数据,点击“允许”
  4. 之后Google会跳转到你指定的redirect_uri:
    • 如果是Web回调,URL参数里会带code=xxx,你需要在后端代码里捕获这个code
    • 如果是urn:ietf:wg:oauth:2.0:oob,页面会直接显示一串授权码,复制下来就行

三、用授权码换Token

拿到授权码后,你需要调用Google的Token接口来换取真正能用的access_token和refresh_token,这里用curl举个例子(你也可以用你熟悉的语言发POST请求):

curl -X POST https://oauth2.googleapis.com/token \
  -d client_id=YOUR_CLIENT_ID \
  -d client_secret=YOUR_CLIENT_SECRET \
  -d code=刚才拿到的授权码 \
  -d redirect_uri=YOUR_REDIRECT_URI \
  -d grant_type=authorization_code

请求成功后,你会得到类似这样的JSON响应:

{
  "access_token": "ya29.a0AfH6SMB...",
  "expires_in": 3599,
  "refresh_token": "1//0g...",
  "scope": "https://www.googleapis.com/auth/androidpublisher",
  "token_type": "Bearer"
}
  • access_token:用来调用Android Publisher API的凭证,有效期1小时
  • refresh_token:当access_token过期时,用它来获取新的access_token(只要用户不撤销授权,这个refresh_token可以一直用)

四、后续维护Token

当access_token过期后,你可以用refresh_token来刷新,不用再走授权流程:

curl -X POST https://oauth2.googleapis.com/token \
  -d client_id=YOUR_CLIENT_ID \
  -d client_secret=YOUR_CLIENT_SECRET \
  -d refresh_token=你的refresh_token \
  -d grant_type=refresh_token

这个请求会返回新的access_token和过期时间。

几个容易踩的坑

  • redirect_uri必须和控制台里的完全匹配,差一个字符都会报错
  • 授权码只能用一次,用过就失效,所以要尽快换取Token
  • 一定要保存好client_secret和refresh_token,这是敏感信息,不能泄露给前端或用户
  • 如果是后台服务,建议用“服务端应用”类型的Client ID,不要用移动端的

内容的提问来源于stack exchange,提问作者lavanya velu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:30