【问题标题】:Twitter Friendship/create api asking for authentication in swiftTwitter Friendship/create api 要求在 swift 中进行身份验证
【发布时间】:2017-04-25 19:05:35
【问题描述】:

我正在尝试发布关注用户,但仍然无法点击 post api POST https://api.twitter.com/1.1/friendships/create.json?user_id=1401881&follow=true

它正在显示:

错误:可选(错误域=TwitterAPIErrorDomain 代码=220“请求 失败:禁止 (403)" UserInfo={NSLocalizedFailureReason=Twitter API 错误:您的凭据不允许访问此资源。 (代码 220),TWTRNetworkingStatusCode=403, NSErrorFailingURLKey=https://api.twitter.com/1.1/friendships/create.json?user_id=12345&follow=true, NSLocalizedDescription=请求失败:禁止 (403)})

这是我的代码 :::

让 twitterClient = TWTRAPIClient()

    let statusesShowEndpoint = "https://api.twitter.com/1.1/friendships/create.json?user_id=852067343241027587&follow=true"
    //let params = ["user_id":"\(userId)","follow":"true","screen_name": "Deploables1"]
    var clientError : NSError?

    var request = twitterClient.urlRequest(withMethod: "POST", url: statusesShowEndpoint, parameters: nil, error: &clientError)
    request.addValue("Bearer \(twitterAccess)", forHTTPHeaderField: "Authorization")
    request.addValue("gzip", forHTTPHeaderField: "Accept-Encoding")

    request.addValue("client_credentials", forHTTPHeaderField: "grant_type")
    request.addValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
    twitterClient.sendTwitterRequest(request) { (response, data, connectionError) in
        if connectionError != nil {
            print("Error: \(connectionError)")
        }else {

            do {
                print("response ::\(response)")



                let json:NSDictionary = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary
                print("json: \(json)")



            } catch let jsonError as NSError {
                print("json error: \(jsonError.localizedDescription)")
            }





        }
    }

谁能帮我解决这个问题。提前致谢

【问题讨论】:

  • 错误很明显,它说您没有凭据,请出示您的代码。
  • 让 twitterClient = TWTRAPIClient() 让 statusesShowEndpoint = "api.twitter.com/1.1/friendships/…" var clientError : NSError? var request = twitterClient.urlRequest(withMethod: "POST", url: statusesShowEndpoint, 参数: nil, error: &clientError) request.addValue("Bearer (twitterAccess)", forHTTPHeaderField: "Authorization") request.addValue("gzip", forHTTPHeaderField: "Accept-Encoding")
  • twitterClient.sendTwitterRequest(request) { (response, data, connectionError) in if connectionError != nil { print("Error: (connectionError)") }else { do { print("response :: (响应)”)
  • 在您的帖子中添加您的代码edit

标签: swift3


【解决方案1】:

这是用他/她的 twitter id 或 screen_name 关注用户的简单方法:

func gettingFollowUsingSLComposerTwitter() {

let accountStore = ACAccountStore()
let twitterType = accountStore.accountType(withAccountTypeIdentifier: ACAccountTypeIdentifierTwitter)

accountStore.requestAccessToAccounts(with: twitterType, options: nil,
                                     completion: { (isGranted, error) in
    guard let userAccounts = accountStore.accounts(with: twitterType),
        userAccounts.count > 0 else { return }
    guard let firstActiveTwitterAccount = userAccounts[0] as? ACAccount else { return }

    // post params
    var params = [AnyHashable: Any]() //NSMutableDictionary()
        params["screen_name"] = "Deploables1"
        params["follow"] = "true"

    // post request
    guard let request = SLRequest(forServiceType: SLServiceTypeTwitter,requestMethod: SLRequestMethod.POST,
                                                                      url: URL(string: "https://api.twitter.com/1.1/friendships/create.json"),
                                                                      parameters: params) else { return }
    request.account = firstActiveTwitterAccount

    // execute request
      request.perform(handler: { (data, response, error) in
    print(response?.statusCode)
    print(error?.localizedDescription)

      })
})

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2011-04-30
    • 2013-08-22
    • 2013-04-15
    • 2021-04-14
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多