2011-12-04 45 views
4

我正在开发一个应用程序在android中提供有关不同地方的信息。我曾经在Picasa中存储这些地方的图片,并使用google apis检索它们,为此我为持有图片的用户创建了一个新的Google帐户。发送用户名和密码到谷歌oauth认证

问题是,当我启动oauth进程获取令牌时,我得到一个新的网页,要求输入用户名和密码。由于这是技术用户,所有最终用户都不会知道用户和密码。

有没有办法与其他OAuth的值(CLIENT_ID,secret_id,REDIRECT_URI一起发送的用户名和密码,...?

谢谢

+0

你正在谈论哪个userid /密码?你的用户谁将登录到谷歌或你的? –

+0

如果您为场景后面的每个用户创建Picasa帐户,为什么无法代表他/她在场景后面登录? – Meysam

回答

0

尝试把你的照片在公众席Picasa网络相册,在这种情况下,没有访问的照片需要用户帐户的

2

谷歌OAuth认证是一个三条腿的过程:

  1. 获取荷兰国际集团请求令牌
  2. 授权该请求令牌
  3. 交易所授权的请求令牌的访问令牌

的用户名和密码,在这个过程中的第二阶段是必需的,其中用户通过使用他的登录凭据,授权客户端应用程序访问存储在Google服务器中的私人数据。

现在到了@Luis提出的问题,即是否有办法将用户名和密码与其他oauth值一起发送?答案是否定的。无法在授权标头中或在授权URI的查询参数中发送用户名和密码。应始终让用户知道客户端(这是您的应用程序)正在使用用户的数据。因此,用户总是被重定向到他/她被要求提供登录证书的网页。这也允许用户针对他的私人数据对应用程序设置访问控制方面的限制。

如果允许应用程序存储和发送用户登录凭证以及Oauth授权标头,那么用户永远不会知道应用程序正在使用其私有数据,也不能为应用程序设置任何类型的限制。

希望这个解释有帮助。

0

如果您想避免显示登录对话框,可以尝试使用AccountManager获取OAuth令牌。这将在幕后使用已保存的Google帐户的用户名和密码有效地做同样的事情。自然,帐户需要先在设备上注册。这里是一个简短的描述,你只需要找出Picasa的权利范围,并把它作为令牌类型:http://developer.android.com/training/id-auth/authenticate.html

你可以得到令牌使用与ClientLogin的用户名和密码的认证,但是已经被弃用,所以在新项目中使用它不是一个好主意。

相关问题