【问题标题】:Using ASWebAuthenticationSession to connect to Strava account fails使用 ASWebAuthenticationSession 连接 Strava 帐户失败
【发布时间】:2019-09-16 03:47:36
【问题描述】:

我在使用用于 iOS 应用程序中的 OAuth2 进程的新 ASWebAuthenticationSession 类时遇到问题。

我想使用这个类将我的应用程序与我的 Strava 帐户相关联。 我有以下代码:

class AuthController
{
    private var authSession: ASWebAuthenticationSession?

    func authenticate()
    {
        let string = self.createWebAuthUrl()
        guard let url = URL(string: string) else { return }

        self.authSession = ASWebAuthenticationSession(url: url, callbackURLScheme: "MaccaStravaWebAuth://", completionHandler:
        {
            url, error in

        })

        self.authSession?.start()
    }

    fileprivate func createWebAuthUrl() -> String
    {
        var url = String.empty

        url.append("https://www.strava.com/oauth/mobile/authorize")
        url.append("?client_id=000000") // Removed for stackoverflow...
        url.append("&redirect_uri=MaccaStravaWebAuth://test.com")
        url.append("&response_type=code")
        url.append("&approval_prompt=force")
        url.append("&grant_type=authorization_code")
        url.append("&scope=activity:write,activity:read_all")

        return url
    }
}

我将自定义 URL 方案添加到我的 info.plist 文件中。我将示例代码中的回调 URL 更改为“test.com”,但实际上这与我的 Strava 应用程序设置中使用的 URL 完全相同。

当我调用 authenticate() 函数时,会弹出一个对话框并打开 Strava 站点。当我点击“授权”时,completionHandler 不会被调用(只有当我点击取消时才会调用)。

我必须添加一些不同的东西吗?我的回调网址有效吗?我尝试了回调 URL 方案和我在 Strava 中设置的回调 url 的几种组合,但没有任何效果。

【问题讨论】:

标签: ios swift oauth-2.0 aswebauthenticationsession


【解决方案1】:

因为我很确定我的代码是正确的。 我通过打开 Safari 并输入用作回调 url 方案的自定义 URL 方案对此进行了测试。显示了一个提示 - 所以我知道自定义 URL 方案设置正确。

现在我尝试清除 Safari 缓存,这似乎解决了问题。

现在点击授权按钮后,我的应用程序将重新打开。

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2018-10-28
    • 2021-07-02
    • 2020-10-19
    相关资源
    最近更新 更多