Reddit API returns 401(使用 OAuthSwift)

Reddit API returns 401 (using OAuthSwift)

所以我正在尝试让我的示例 reddit 应用程序与 OAuthSwift 一起工作

我从 reddit

得到 401Unauthorized
oauthswift = OAuth2Swift(
     consumerKey:    "reddit_Client_id",
     consumerSecret: "",
     authorizeUrl:   "https://www.reddit.com/api/v1/authorize",
     accessTokenUrl: "https://www.reddit.com/api/v1/access_token",
     responseType:   "code"
)
    
guard let rwURL = URL(string: "redditTestApp://oauth-callback") else { return }
    
handle = oauthswift!.authorize(
        withCallbackURL: rwURL,
        scope: "identity read", state:"reddit") { result in
        switch result {
        case .success(let (credential, response, parameters)):
          print(credential.oauthToken)
          // Do your request
        case .failure(let error):
            print(error.description)
        }
}

我有点迷失在这里我所缺少的东西。我想我已经传递了所有参数,但不确定还剩下什么以获得 unauthorized 响应。

所以把它留在这里以防将来有人需要帮助。

问题是在检索访问令牌期间,reddit 需要使用 http 基本身份验证的授权 header。

OAuthSwift 库提供了一种简单的方法,您只需添加

oauthswift?.accessTokenBasicAuthentification = true

大功告成。

非常感谢!除了那条线

之外,我还因为同样的问题而失去理智
oauth.accessTokenBasicAuthentification = true

在授权之前(withCallbackURL...,您还需要将您的 client_id 作为用户和空字符串作为密码添加到授权参数中

oauthswift.authorize(withCallbackURL: redirectURL,
                     scope: "identity read",
                     state: "reddit",
                     parameters: ["user": "your_key", "password": "", "duration": "permanent or temporary", "grant_type": "authorization_code"])