在嵌入式Android设备上使用谷歌OAuth 2.0

15

你的应用程序需要用户授权才能访问他们自己的资源吗?如果不需要,那么你可能不需要OAuth。OAuth并不是认证。 - pinoyyid
很不幸,这是我们客户的要求,他们有谷歌应用账户,我们必须使用它进行身份验证。 - iirekm
请明确,OAuth 不是身份验证。Google 的身份验证至少需要一个网络浏览器(对于 2FA 需要更多),这是无法绕过的。 - pinoyyid
你尝试过为电视和嵌入式设备使用OAuth流程吗?在这里看一下:https://developers.google.com/identity/protocols/OAuth2ForDevices - Fco P.
4个回答

2

通过浏览器实现:

1)注册自定义URI方案(如何在Android上实现自己的URI方案),例如,app-oauth2://

2)在用户的浏览器中进行访问请求。

https://accounts.google.com/o/oauth2/v2/auth?
scope=...
access_type=offline&
include_granted_scopes=true&
state=state_parameter_passthrough_value&
redirect_uri=http://example.com/oauth2-handler&
response_type=code&
client_id=...

3) 如果用户在确认对话框中接受或拒绝请求的权限,将重定向到redirect_uri (http://example.com/oauth2-handler) 并携带一些参数。

4) 在redirect_uri处理程序 (http://example.com/oauth2-handler) 的一侧,将使用以下参数进行自定义URI方案的重定向:

  • 成功: app-oauth2://?state=state_parameter_passthrough_value&code=...&scope=...#
  • 失败: app-oauth2://?error=access_denied&state=state_parameter_passthrough_value#

5) 在您的应用程序中,您可以从选项4中解析URI方案app-oauth2://并接收未来使用的代码或错误以显示给用户。


似乎是一个可行的解决方案。你有没有想过这怎么能在Cordova中运作? - Jalal El-Shaer
如果Cordova支持自定义协议处理和打开用户浏览器的可能性-是的。 - cetver

1

0

这是关于OAuth 1的内容,谷歌已经多年不再支持它。 - iirekm

0

设备未安装谷歌服务!! - 你认为这将如何完成? - Aloy A Sen
https://developers.google.com/api-client-library/java/google-api-java-client/oauth2#android 这个链接使用AccountManager,请阅读第二个链接,第一个链接似乎指向OAuth 2当您有Google服务时我已编辑答案。 - Chester Cobus
你是正确的 @Aloy A Sen,所以我已经编辑了答案。在这种情况下,你需要使用Google客户端API库来进行OAuth 2认证。链接可能会误导,但我找到了正确的代码。 - Chester Cobus
这个链接使用了INTENT https://github.com/sathify/tagpulse/blob/master/android/src/tag/pulse/main.java 这是我的答案。 - Aloy A Sen
看起来像OAuth 1? - Chester Cobus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接