2016-10-19 6 views
0

Twitter Rest APisを使用して認証エラーが発生しました。それはポストマンに取り組んでいますが、郵便配達員にはConsumer SecretをAuthorizationに追加するオプションがありますが、私はそのキーをURLRequestにどこに置くべきか分かりません。私は郵便配達時と同じコードスニペットを使用していますが、私のアプリ側で私は正当なエラーの後に直面しています。twitterログインの認証エラー

let requestTokenURL = URL(string:"https://api.twitter.com/oauth/request_token") 
let consumerKey = "xxxxxxxxxxxxxxxxxxxxxx" 
let consumerSecretKey = "xxxxxxxxxxxxxxxxx" 
let signatureMethod = "HMAC-SHA1" 
let signature = "hgjhagdAGFSSAJKaqhsugqggqskugkg" 
let timestamp = String(Date().timeIntervalSince1970) 
let nonce = UUID().uuidString 
let version = "1.0" 


class TwitterHelper{ 

    func getAuthToken(){ 

     let session = URLSession.shared 
     let info = [["OAuth oauth_consumer_key":consumerKey], 
        ["oauth_signature_method":signatureMethod], 
        ["oauth_timestamp":timestamp], 
        ["oauth_nonce":nonce], 
        ["oauth_version":"1.0"], 
        ["oauth_signature":signature] 
        ] 

     var formattedString = "" 
     for case let authData in info { 
      for (key,value) in authData{ 
       formattedString += key + "=" + (value) + "," 
      } 
     } 



     let headers = [ 
      "content-type": "application/x-www-form-urlencoded", 
      "Authorization":formattedString 
     ] 

     var request = URLRequest(url: requestTokenURL!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10) 
     request.httpMethod = "POST" 
     request.allHTTPHeaderFields = headers 

     session.dataTask(with: request) { (data, response, error) in 

      if let parsedData = parseJsonData(data: data){ 
      print(parsedData) 


      } 
     }.resume() 

    } 
} 

応答:

{ 
    code = 32; 
    message = "Could not authenticate you."; 
} 

それは消費者の秘密鍵によるものです。 twitterのドキュメントでは、使用することは定義されていませんが、私がPostman Authorizationで使用するときには動作します。私はヘッダーにその「消費者秘密鍵」を使用する方法を理解していません。

答えて

1

あなたは(ちょうどOAuthの2のために)あなたのコードでやろうとしているものである、のOAuth 1.0のコンシューマシークレットを必要としません。

問題は、これが権利を取得するのは非常に複雑でトリッキーであるとして、あなたが作成しているのOAuth署名の周りの可能性が高いです。

は、あなたが署名・ベースを作成するhereを概説すべての手順を以下していることを確認します。コンシューマーキーをutf8に変換してからbase64でエンコードすることも忘れないでください。