gpt4 book ai didi

android - 通过对话框在 WebView 中的 Google 网站上授权用户

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:41 26 4
gpt4 key购买 nike

例如,用户在 WebView 中导航到 google.com。

是否可以通过 Google 帐户选择器(类似于此处描述的 https://developers.google.com/android/guides/http-auth )在那里授权他以简化授权,而不是通过网络表单手动登录?Android Web 浏览器(例如 Google Chrome)通过此方法授权用户。

最佳答案

第 I 部分:使用 Google Plus 服务 API

如果我正确理解你的问题,你可以使用 Google Plus Services API 实现你想要做的事情。 .

您创建自己的 GoogleSignInOptions然后创建你的 GoogleApiClient使用这些登录选项。从那里,您使用 Auth.GoogleSignInApi.getSignInIntent用你的GoogleApiClient作为参数。

这个 Intent 应该启动一个 SignInIntent显示 Google 帐户选择器(将包括以前在设备上访问过的帐户,以及添加其他帐户的能力)。

一旦您取回 GoogleSignInResult ,您可以验证用户是否已通过身份验证,然后按照其他方式创建身份验证流程。

甚至包含在 Android SDK 中的还有 Google SignInButton ,您可以直接在布局中使用它,而不必为登录创建自定义按钮。

第二部分:使用 WebViewClient

现在,如果您尝试使用 WebView要对它们进行身份验证,最好的办法是扩展 WebViewClient类(class)。

您需要的东西: clientId , clientSecret , 和 clientScope (当您在 Google Developer Console 中创建应用程序时,将为您提供所有这些详细信息)

首先,您要授权的 URL 可能如下所示:https://accounts.google.com/o/oauth2/auth?response_type=code&clientId={your client id}&state={SOMESTATEINFO}&access_type=offline (访问类型,如果你想离线访问)。这应该是您的 WebView 的初始 URL

接下来,您需要修改扩展的 WebViewClient 类。您要做的是覆盖 shouldOverrideUrlLoading(WebView webView, String url)监听你的方法 redirectURL .可能最简单的方法是使用 url.startsWith(<your redirect URL>)检测到这一点。然后您可以解析响应。如果您的回复包含 error ,那么这意味着出了点问题。否则,您应该在 URL 中取回两个字段:codestate .如果你没有得到 error返回,然后返回 true对于 shouldOverrideUrlLoading .

一旦你得到你的 code , 你可以创建一个新的 GoogleAuthorizationCodeFlow ,使用您的客户端、范围和 secret 。

有了流程后,您将需要一个 GoogleTokenResponse ,您将能够使用 code 获得使用 GoogleTokenResponse response = flow.newTokenResponse(<code>).setRedirectUri(<redirectUri>).execute() 在上面获得您的授权码.

完成此操作后,您将获得 response , 你可以得到你的 Credential使用 flow.createAndStoreCredential(response, null) .

瞧,使用这个 Credential ,您可以验证您的通话。

警告 我无法获得 WebView识别已在其他网络浏览器上登录的帐户,因此帐户选择器可能仅显示已在应用特定的 WebView 上登录的帐户。

tl;drWebView 可以做到这一点和 WebViewClient ,但与使用 Google Plus Services API 相比,它比较麻烦而且有点迂回。

This example一旦您获得授权代码等,就可以更好地说明授权流程/凭据。

And here's some documentation on the WebViewClient这也可能有用。

希望这能帮助您指明正确的方向!

关于android - 通过对话框在 WebView 中的 Google 网站上授权用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33507077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com