使用 ASWebAuthenticationSession 连接 Strava 账户失败
Using ASWebAuthenticationSession to connect to Strava account fails
我在使用用于 iOS 应用程序中的 OAuth2 进程的新 ASWebAuthenticationSession class 时遇到问题。
我想使用此 class 将我的应用程序与我的 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 Whosebug...
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 的 URL 完全相同.
当我调用 authenticate() 函数时,会弹出一个对话框并打开 Strava 站点。当我点击 "Authorise" 时,completionHandler 没有被调用(只有当我点击取消时才会被调用)。
我需要添加一些不同的东西吗?我的回调 url 有效吗?我尝试了回调 URL 方案和我在 Strava 中设置的回调 url 的几种组合,但没有任何效果。
因为我非常确定我的代码是正确的。
我通过打开 Safari 并输入用作回调 url 方案的自定义 URL 方案来对此进行测试。显示了提示 - 所以我知道自定义 URL 方案设置正确。
现在我尝试清除 Safari 缓存,这似乎解决了问题。
现在我点击授权按钮后,我的应用程序将重新打开。
我在使用用于 iOS 应用程序中的 OAuth2 进程的新 ASWebAuthenticationSession class 时遇到问题。
我想使用此 class 将我的应用程序与我的 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 Whosebug...
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 的 URL 完全相同.
当我调用 authenticate() 函数时,会弹出一个对话框并打开 Strava 站点。当我点击 "Authorise" 时,completionHandler 没有被调用(只有当我点击取消时才会被调用)。
我需要添加一些不同的东西吗?我的回调 url 有效吗?我尝试了回调 URL 方案和我在 Strava 中设置的回调 url 的几种组合,但没有任何效果。
因为我非常确定我的代码是正确的。 我通过打开 Safari 并输入用作回调 url 方案的自定义 URL 方案来对此进行测试。显示了提示 - 所以我知道自定义 URL 方案设置正确。
现在我尝试清除 Safari 缓存,这似乎解决了问题。
现在我点击授权按钮后,我的应用程序将重新打开。