ios - 能够使用 Twitter 的 REST API 发布直接消息,但尝试 GET 会返回 401 错误

标签 ios swift twitter twitter-oauth

我正在尝试在我的应用程序中获取直接消息。我可以很好地发布 DM,但是当我尝试从端点 https://api.twitter.com/1.1/direct_messages.json 获取它们时它返回 401 - 未经授权。我真的不明白如何授权我发送私信但不让别人发送给我。

以下是我最初进行身份验证的方式:

if Twitter.sharedInstance().sessionStore.session() == nil {
            Twitter.sharedInstance().logInWithCompletion { session, error in
                if (session != nil) {
                    // successfully logged in, call loading functions 
                } else {
                    print("error: \(error!.localizedDescription)")
                }
            }
        } else {
            // already logged in, call loading functions 
        }

每次我使用 REST API 发出请求时,都会以

开头
if let userID = Twitter.sharedInstance().sessionStore.session()?.userID {
            let client = TWTRAPIClient(userID: userID)

客户端在 DM 的 POST 和 GET 请求中以相同的方式初始化,但 GET 请求失败。

就权限而言,我根据 Twitter 检查了它是否具有读/写/DM 访问权限,并且成功的请求返回 "x-access-level"= "read-write-directmessages";,所以我认为它设置正确。

我一度担心我可能无法正确进行身份验证,因为 Twitter 的文档经历了 O-Auth 的 3 步流程,而我所做的就是告诉 Twitter 单例只需登录......但我通过假设这些步骤都在 logInWithCompletion 函数中执行来合理化这一点。此外,如果我没有经过正确的身份验证,我肯定无法发送 DM,对吗?

关于如何解决这个问题有什么想法吗?我很新,所以这可能是一些美好而简单的事情!我已经查看了其他一些问题,但它们似乎都对请求进行了完整编码,而不是使用像这样的内置方法 - 或者我全都错了?

最佳答案

是的,这是一个愚蠢的问题 - 我将参数留空,因为它们都被标记为“可选” - 就像 ["": ""] 的字典一样。我刚刚将请求中的参数设置为 nil,现在它可以工作了。

关于ios - 能够使用 Twitter 的 REST API 发布直接消息,但尝试 GET 会返回 401 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325875/

相关文章:

ios - UINavigationController: viewDidLoad 被调用但不影响 UI

ios - RSA 公钥生成——Swift

ios - 我想在 ios 中每五分钟加载一次 facebook 插页式广告(swift)

Twitter Oauth URL 编码不一致?

Twitter 热门话题 : Combine different spellings

ios - Apple App Store 中应用所在的国家/地区

ios - XMPPFramework - 上传个人资料或头像图片

ios - 表情符号不显示在推送通知中

ios - 如何在 iOS Swift 4 中检测屏幕锁定/解锁?

javascript - Jquery/Javascript - 无法递增数字 (tweet-id)