2017-04-24 60 views
0

我想發佈一個跟隨用戶,但我仍然無法打後post api POST https://api.twitter.com/1.1/friendships/create.json?user_id=1401881&follow=trueTwitter友誼/創建API請求認證在迅速

它顯示:

Error: Optional(Error Domain=TwitterAPIErrorDomain Code=220 "Request failed: forbidden (403)" UserInfo={NSLocalizedFailureReason=Twitter API error : Your credentials do not allow access to this resource. (code 220), TWTRNetworkingStatusCode=403, NSErrorFailingURLKey= https://api.twitter.com/1.1/friendships/create.json?user_id=12345&follow=true , NSLocalizedDescription=Request failed: forbidden (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)") 
      } 





     } 
    } 

誰能幫我出這一點。在此先感謝

+0

的錯誤是明顯的,它說,你不有憑據,請顯示您的代碼。 – eyllanesc

+0

讓TwitterClient的= TWTRAPIClient() 讓statusesShowEndpoint = 「https://api.twitter.com/1.1/friendships/create.json?user_id=852067343241027587&follow=true」 VAR clientError:NSError? VAR請求= twitterClient.urlRequest(withMethod: 「POST」,URL:statusesShowEndpoint,參數:無,錯誤:&clientError) request.addValue( 「承載\(twitterAccess)」,forHTTPHeaderField: 「授權」) request.addValue如果connectionError!= nil {「Error:\(connectionError)」) } –

+0

twitterClient.sendTwitterRequest(request){(response,data,connectionError) }(「gzip」,forHTTPHeaderField:「Accept-其他{ do print(「response :: \(response)」) –

回答

0

,這是簡單的方式來跟隨他/她的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) 

     }) 
}) 

}