直到现在,我只有一个客户端(Web应用程序)正在执行OAUTH2授权流程,然后将访问令牌和刷新令牌都发送到服务器(ASP.NET Web API)。
然后在服务器上,这些令牌将用于针对Google API进行多项操作。
到目前为止,一切都很完美,我们需要添加执行相同OAUTH2授权流程的移动客户端。
这需要我在Google控制台下添加这些Android和iOS应用程序。这3个(Web,Android和iOS)都属于同一个项目。
现在出现了问题,因为在服务器上,我必须使用google提供给我的json文件(带有clientId和secret),到目前为止,该文件与webapp所使用的相同。但是现在,由于我们在同一个项目中有两个新客户端,因此我假设我可以使用以前使用的相同令牌访问Google Api,这些令牌现在也由Android和iOS发送。
但这似乎不起作用,我明白了:
Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Error:"unauthorized_client", Description:"Unauthorized", Uri:""
是否总有可能?我还考虑过根据客户端向我发送令牌的方式提供json机密文件,但从文件结构来看,它们是不同的,iOS甚至没有json文件,而是plist。
任何帮助将不胜感激。
答案 0 :(得分:1)
在Android或iOS设备上收到的访问和刷新令牌只能在此设备上使用。例如,Android OAuth客户端已在Google中注册,其软件包名称和签名证书指纹为restrict usage to your Android app。
您可以将Web应用程序中收到的访问和刷新令牌传递到后端服务器。
如果您希望后端服务器能够在用户脱机时代表他们进行Google API调用,则您的服务器需要使用自己的访问令牌:
您的后端服务器OAuth客户端应具有Web application
类型(您可以与Web应用程序共享OAuth客户端)。
可在此处找到详细说明:
答案 1 :(得分:-1)
我发现我可以使用多客户端授权,请在这里查看我的帖子: Deploying Gmail Apis Project Authentification probleme