【问题标题】:oauth2 authentication not working in iPhoneoauth2 身份验证在 iPhone 中不起作用
【发布时间】:2019-06-26 12:44:59
【问题描述】:

我正在开发一个 iPhone 应用程序,我需要在其中使用 hubspot 实现登录。 为了实现这一点,我在 swift 中使用了 oauth2 库。在这个我使用下面的代码来做授权。 当我运行该应用程序时,它会将我导航到 safari 并要求输入 Hubspot 的 ID 和密码。当我输入它时,它只是让我留在网站内并显示 3 个点正在加载。

{
let oauthswift = OAuth2Swift(
consumerKey: "****",
consumerSecret: "****",
authorizeUrl: "https://app.hubspot.com/oauth/authorize",
accessTokenUrl: "https://api.hubapi.com/oauth/v1/token",
responseType : "code"
)
oauthswift.authorize(withCallbackURL: URL(string: "myapp://"), scope: "contacts", state:"code", success: { (credentials, response, parameters) in
print(response as Any)
}, failure: { (error) in
print(error)
})

}

【问题讨论】:

    标签: swift crm hubspot-crm


    【解决方案1】:

    我认为您忘记了向您的应用添加自定义 URL 方案。您必须转到目标设置,打开选项卡信息并在“URL 类型”下添加新的 URL 方案。请记住将“URL Schemes”设置为与您的回调 URL 方案相同的值(在您的情况下它将是 myapp,但我会建议您更改为更特定于您的应用程序的内容,例如您的包 ID)。此外,您必须在 AppDelegate 中实现application(_:open:options:) 方法(Docs):

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey  : Any] = [:]) -> Bool {
      if (url.host == "myapp") {
        OAuthSwift.handle(url: url)
      }
      return true
    }
    

    所有这些步骤都写在这个库中阅读我:https://github.com/OAuthSwift/OAuthSwift

    这就是URL Types 部分的样子(请记住,您必须输入回调 URL 方案 - myapp

    【讨论】:

    • bazyl87 - 谢谢你的回复,我已经在AppDelegate中设置了URL Scheme和方法
    • 在这种情况下,我建议您检查一下 Hubspot 中是否正确配置了回调 URL,或者使用 myapp:// 作为回调 URL 可能存在一些问题,也许可以尝试更长的时间,例如:myapp://oauth-callback/hubspot
    • 在 hubspot 中有设置回调 URL 的选项,但它只接受像 google.com 这样的有效 URL 它不接受像 myapp:// 这样的 URL 我尝试使用像 myapp://oauth-callback/hubspot 这样的长 URL但它也没有用。它只是在 safari 浏览器登录后继续加载。
    • 好吧,所以也许你不应该使用 Safari,而是使用 UIWebView 或 WKWebView,使用 your-callback 并自己处理加载此回调。您应该阅读文档中的“处理授权 URL”部分:github.com/OAuthSwift/OAuthSwift/blob/master/… 并检查
    猜你喜欢
    • 2017-07-28
    • 2012-10-04
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多