Я пытался какое-то время заставить oauth2 работать с Untappd api (https://untappd.com/api/docs#authentication) и работал в тупиках с помощью нескольких различных фреймворков oauth2.Swift OAuth2 p2
Я пытался P2 OAuth. Я, кажется, могу начать процесс аутентификации, пользователь заходит, я получаю код обратно и сталкиваюсь с проблемой отправки этого кода обратно в untappd для токена. Я шел от примера из P2 OAuth:
class ViewController: UIViewController {
fileprivate var alamofireManager: SessionManager?
var loader: OAuth2DataLoader?
var oauth2 = OAuth2CodeGrantNoTokenType(settings: [
"client_id": "A0******************",
"client_secret": "BA******************",
"authorize_uri": "https://untappd.com/oauth/authenticate",
"token_uri": "https://untappd.com/oauth/authorize",
"redirect_uris": ["****://oauthcallback"],
"response_type": "code",
"secret_in_body": false,
"keychain": true,
] as OAuth2JSON)
@IBOutlet var imageView: UIImageView?
@IBOutlet var signInEmbeddedButton: UIButton?
@IBOutlet var signInSafariButton: UIButton?
@IBOutlet var signInAutoButton: UIButton?
@IBOutlet var forgetButton: UIButton?
@IBAction func signInEmbedded(_ sender: UIButton?) {
if oauth2.isAuthorizing {
oauth2.abortAuthorization()
return
}
sender?.setTitle("Authorizing...", for: UIControlState.normal)
oauth2.authConfig.authorizeEmbedded = true
oauth2.authConfig.authorizeContext = self
oauth2.verbose = true
oauth2.authorize() { authParameters, error in
if let params = authParameters {
print("Authorized! Access token is in `oauth2.accessToken`")
print("Authorized! Additional parameters: \(params)")
}
else {
print("Authorization was cancelled or went wrong: \(error)") // error will not be nil
}
}
}
В журналах я, кажется, чтобы получить обратно код, но окончательный обмен не удается:
[Debug] OAuth2: Замена кода 2010D2 *********** для маркеров доступа на https://untappd.com/oauth/authorize перенаправлять
[Debug] OAuth2: Сделал обмен код доступа [ложном] и обновить [ложь] жетоны авторизованы! Токен доступа находится в
oauth2.accessToken
Авторизованный! Дополнительные параметры: ["meta": { "error_detail" = "Отсутствует либо client_id, redirect_url, client_secret, либо параметр кода. Повторите попытку повторно."; "error_type" = "param_error"; "http_code" = 500; }, "ответ": < __NSArray0 0x174005900> ( ) ]
Там, кажется, не будет много помощи для OAuth2 и Swift 3, если я не смотрю в неправильных местах. Есть идеи?