首页 > 解决方案 > watchOS 6.2 上使用 ASWebAuthenticationSession 的 Uber API OAuth

问题描述

我正在尝试使用 watchOS 6.2 的新 OAuth 功能通过 Uber 的 API 进行身份验证ASWebAuthenticationSession

ASWebAuthenticationSession(url: uberUrl, callbackURLScheme: scheme) { (URL?, Error?) -> in {
  print(callbackUrl, error)

  if let url = callbackUrl {
     let components = NSURLComponents(string: (url.absoluteString))
     if let t = components?.queryItems?.filter({$0.name == "code"}).first?.value {
        self.token = t
     }
  }

  }

当我运行它时,手表上会出现一个可爱的小网络浏览器并提示输入“电子邮件或手机号码”,输入我的电子邮件后,单击“下一步”会弹出一个文本输入窗口,然后突然消失,让我回到电子邮件条目。随后单击“下一步”会弹出一个文本输入窗口,只允许我编辑电子邮件地址。密码永远不是一种选择。我从来没有完成关闭,即使出现错误也是如此。

如果我向下滚动到“使用 Google 登录”,那么会加载 Google 的登录页面,让我输入电子邮件和密码,然后执行完成块(我得到一个 nil 令牌大概是因为我的 Uber 帐户不是 Google 帐户)。

我怀疑 Uber 的登录网页存在问题,但除了观察到 Google 的登录网页似乎可以正常工作之外,我无法验证这一点。此外,我找不到callbackURLScheme关于 watchOS 参数的文档。我在 plist 中创建了一个方案,就像使用 iOS 应用程序一样,但无法确认这是正确的过程。尽管如此,这并没有改变密码字段不会出现在优步的誓言登录页面上的事实。

此时在 StackOverflow 中搜索 watchOS 和 ASWebAuthenticationSession 不会产生任何结果。

现在还有其他人尝试这样做吗?有没有人成功过?我是否遗漏了一些重要的东西,或者这只是 Uber 的错误?

标签: uber-apiwatchos

解决方案


推荐阅读