我正在 android 中开发一个应用程序,它提供有关不同地方的信息。我已经将这些地方的图像存储在 picasa 中并使用 google api 检索它们,为此我为持有图像的用户创建了一个新的 google 帐户。
问题是当我启动用于获取 token 的 oauth 进程时,我收到一个新网页,要求输入用户名和密码。由于这是技术用户,所有最终用户都不知道用户和密码。
有没有办法将用户名和密码与其他 oauth 值(client_id、secret_id、redirect_uri 等)一起发送?
谢谢
最佳答案
Google Oauth 身份验证是一个三足流程:
- 获取请求 token
- 授权该请求 token
- 将授权请求 token 交换为访问 token
在此过程的第二阶段需要用户名和密码,用户使用其登录凭据授权客户端应用程序访问其存储在谷歌服务器中的私有(private)数据。
现在回答@Luis 提出的问题,有没有办法将用户名和密码与其他 oauth 值一起发送?答案是否定的。不可能在授权 header 或授权 URI 的查询参数中发送用户名和密码。原因是应该始终让用户知道客户端(即您的应用程序)正在使用用户的数据。因此,用户总是被重定向到要求他/她提供登录凭据的网页。这也允许用户为应用程序设置关于对其私有(private)数据的访问控制的限制。
如果允许应用程序存储和发送用户登录凭据以及 Oauth 授权 header ,那么用户永远不会知道应用程序正在使用其私有(private)数据,也无法为应用程序设置任何类型的限制。
希望这个解释对您有所帮助。
关于android - 将用户名和密码发送到 google oauth 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372080/