身份工具包 "Trouble Signing In" link Android

Identity Toolkit "Trouble Signing In" link Android

我几乎完全为我的 android 应用程序设置了身份工具包——我只需要在使用用户名进行身份验证时为 link "Trouble Signing In" 设置端点& 密码。

我已尝试(但无济于事)按照 here 列举的步骤进行操作。

我注意到一些奇怪的事情:
1) 发送到后端端点的请求实际上是一个 GET 请求,而不是我期望的 POST(根据上述文档)。
2)当请求到达我的服务器时,调用

OobResponse oobResponse = getGitkitClient().getOobResponse(request);

我将一堆 oobResponse 属性放入我的响应中(使用 Spring Boot,所以我只是 return 一个 jsonified Map)。 这是我得到的值:

{"newEmail": null,"oobResponse":"{\"error\": \"unknown request\"}","email": null,"action": null,"recipient": null}

单击 "Trouble signing in" link.

后,此 json 对象显示在我的设备上

如果相关的话,这里还有一些我的配置:

Android 清单文件包含以下行:

...
<meta-data
    android:name="identitytoolkit.show_providers"
    android:value="Facebook,Google" />
<meta-data
    android:name="identitytoolkit.use_google_plus"
    android:value="false" />
<meta-data
    android:name="identitytoolkit.api_key"
    android:value="myKey" />
<meta-data
    android:name="identitytoolkit.server_client_id"
    android:value="myClientId" />
<meta-data
    android:name="identitytoolkit.server_widget_url"
    android:value="https://example.com/callback" />`
...

在身份工具包 Google 开发者控制台 API 中,我的 URL 配置是这样设置的:

Widget URL: https://example.com/callback  
Sign-in Success URL: https://example.com/signInSuccess  
Sign-out URL: https://example.com/signOut  
Send email URL: https://example.com/sendEmail  

这是我的 Web 客户端 URLs:

Authorized JavaScript origins: http://example.com  
Authorized Redirect URIs: https://example.com/callback  

您对好的教程有什么想法、提示或 link 吗?这是我在发布之前需要完成的最后几件事之一,请帮忙!

更新:
在尝试 fiddle 解决问题之后,我怀疑我的问题可能是由于我正在使用 Spring Boot. Google 表示他们期望的请求是 javax.servlet.http.HttpServletRequest,而 Spring Boot 使用 org.springframework.web.context.request.WebRequest。我找到并包含了 javax.servlet.http.HttpServletRequest .jar,现在我在与 /callback 路径相对应的方法签名中接受该类型的请求。我还尝试将签名中的请求类型设置为 WebRequest 并在调用时将其转换为 HttpServletRequest 类型:

OobResponse oobResponse = getGitkitClient().getOobResponse((HttpServletRequest) request);  

这仍然无效。 :(

<meta-data android:name="identitytoolkit.server_widget_url" android:value="**https://example.com/sendEmail**" />

该值应该是您的小部件 URL,而不是您的发送电子邮件端点。

Here is the official step by step tutorial 关于在 Android 中使用 Identity Toolkit。希望这对您有所帮助!