我正在android中开发一个应用程序来提供有关不同地方的信息。我已经将这些地方的图像存储在picasa中并使用google apis检索它们,为此我为持有图像的用户创建了一个新的Google帐户。
问题是当我启动获取令牌的oauth进程时,我得到了一个新的网页,询问用户名和密码。由于这是技术用户,所有最终用户都不会知道用户和密码。
有没有办法将用户名和密码与其他oauth值一起发送(client_id,secret_id,redirect_uri,......?
谢谢
答案 0 :(得分:3)
Google Oauth身份验证是一个三步过程:
此过程的第二阶段需要用户名和密码,用户可以使用其登录凭据授权客户端应用程序访问存储在Google服务器中的私人数据。
现在回答@Luis提出的问题,是否有办法将用户名和密码与其他oauth值一起发送?答案是否定的。无法在Authorization标头中或授权URI的查询参数中发送用户名和密码。应始终让用户知道客户端(您的应用程序)正在使用用户的数据。因此,用户总是被重定向到要求他/她提供登录凭证的网页。这还允许用户针对应用程序设置关于其私有数据的访问控制的限制。
如果允许应用程序存储并发送用户登录凭证以及Oauth Authorization标头,则用户永远不会知道应用程序正在使用其私有数据,也不能为应用程序设置任何类型的限制。 / p>
希望这个解释有所帮助。
答案 1 :(得分:0)
尝试将您的照片放入Picasa网络相册的公开图片库中,在这种情况下,无需用户帐户即可访问照片。
答案 2 :(得分:0)
如果您想避免显示登录对话框,可以尝试使用AccountManager
获取OAuth令牌。使用Google帐户保存的用户名和密码,这将在幕后有效地做同样的事情。当然,帐户需要在此之前在设备上注册。以下是简要说明,您只需找到Picasa的正确范围并将其作为令牌类型传递:http://developer.android.com/training/id-auth/authenticate.html
您可以使用ClientLogin的用户名和密码获取身份验证令牌,但已被弃用,因此在新项目中使用它并不是一个好主意。