Flutter Android应用调用Google Photos API遇权限不足403错误的解决方法
解决Flutter调用Google Photos Library API的403权限不足问题
以下是针对你遇到的权限不足错误的具体排查和解决步骤:
精确核对登录请求的Scope
确保代码中GoogleSignIn实例初始化时,传入的scopes参数完全匹配https://www.googleapis.com/auth/photoslibrary.readonly,不能有拼写错误、多空格或路径偏差。示例代码如下:final GoogleSignIn googleSignIn = GoogleSignIn( scopes: ['https://www.googleapis.com/auth/photoslibrary.readonly'], );另外,仅调用signOut和disconnect可能无法彻底清除本地OAuth缓存,建议直接卸载应用后重装,确保旧权限令牌被完全清除。
验证访问令牌的实际权限范围
拿到登录返回的access_token后,调用https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=你的令牌,查看返回结果中的scope字段,确认是否包含photoslibrary.readonly。如果没有,说明登录流程中Scope没有正确传递,需要检查GoogleSignIn的初始化逻辑。复查Google Cloud Console配置
- 确认Android OAuth客户端的包名和SHA-1指纹与当前开发环境完全一致(注意区分debug和release版本的SHA-1,开发阶段务必用debug指纹);
- 检查OAuth同意屏幕的权限列表,确认已添加
https://www.googleapis.com/auth/photoslibrary.readonly,且测试用户已正确配置。
确认API调用的请求格式
调用https://photoslibrary.googleapis.com/v1/mediaItems时,确保请求头的Authorization字段格式正确:Bearer 你的访问令牌,注意Bearer与令牌之间必须有空格,令牌本身不能包含多余的换行或空格。
内容的提问来源于stack exchange,提问作者Avishkar




