如何为UWP应用的Google提供者创建自定义OAuth 2.0 redirect_uri?

时间:2019-06-21 14:07:15

标签: uwp oauth-2.0 google-oauth

我想在Google Developer Console中为本机应用程序注册一个自定义的redirect_uri(如pw.oauth2:/ oauth2redirect)(这是UWP应用程序的推荐方法)。根据{{​​3}},必须有一个选项来选择“自定义URI方案(Android,iOS,UWP)”,但我只会看到以下选项:

  • Web应用程序
  • Android
  • Chrome
  • iOS
  • 其他

选择其他不允许我指定redirect_uri。

我应该如何为UWP应用注册自定义的redirect_uri?

如果我没有注册redirect_uri,则在OAuth授权过程中会收到redirect_uri_mismatch错误。

此github示例https://developers.google.com/identity/protocols/OAuth2InstalledApp#request-parameter-redirect_uri中的ClientID有效。看起来此ClientID是required_uri注册的。但是如何为我自己的ClientID实现相同的功能?

这个老问题讨论了类似的问题,但从未有人回答过: https://github.com/googlesamples/oauth-apps-for-windows/tree/master/OAuthUniversalApp

编辑: 澄清。我正在使用上面提到的Google示例(Google APIs for UWP not playing nice with custom redirect scheme)。它可与Google提供的硬编码ClientID一起使用。我只是无法使其与我自己的ClientID一起使用,因为我看不到在其开发者控制台中注册自己的redirect_uri的方法。

2 个答案:

答案 0 :(得分:0)

两个想法:

您是否要在UWP中使用WebAuthenticationBroker来提示用户登录?在这种情况下,您无法在UWP中自定义redirect_uri ...它必须从代表您的WebAuthenticationBroker.GetCurrentApplicationCallbackUri()中获取 Package SID ...看起来像这样:ms-app://s-1-15-2-1374842229...

请确保您正确地编码和解码了redirect_uri-如果执行错误,它将不匹配。没有您的代码,很难说出您的操作方式。

WebUtility.UrlEncode(redirectURI);

答案 1 :(得分:0)

得到它(经过反复试验)。在Google Developer Console中,您需要创建iOS应用。在应用程序属性中,您需要在Bundle ID参数中指定URL方案(取自Visual Studio中UWP应用程序项目的包装清单/声明/协议/名称)。

AppStore ID和团队ID可以保留为空。

捆绑包ID用作URL方案。就我而言,我指定了 pw.oauth2 值(这是Google示例中的值)。然后我保存了更改,在Google UWP示例中设置了iOS应用的ClientID,发现现在一切正常。

Google控制台在iOS应用属性(例如 com.googleusercontent.apps.6284700xxxxx-6tp4d3xxxxx 之类的属性)中提供了 iOS URL方案参数。忽略UWP应用的此值。仅捆绑包ID很重要。