2017-02-25 6 views
8

ネイティブURLクラスとURLRequestクラスを使用して、YelpのFusion APIをiOSクライアントから使用するOAuthトークンを取得しようとしていますが、 「tokenInfo」変数:URLRequestを返すiOS Yelp OAuth Token Retrieval "client_idまたはclient_secretパラメータが見つかりません。

​​

ここに私のコードです:

func getToken(){ 
    var yelpTokenEndpoint = "https://api.yelp.com/oauth2/token" 
    var tokenURL = URL(string: yelpTokenEndpoint) 

    let requestJSON: [String:String] = ["client_id":"Not showing actual client id", "client_secret":"Not Gonna Show My Actual Client Secret either","grant_type":"client_credentials"] 
    let requestData = try? JSONSerialization.data(withJSONObject: requestJSON) 
    print(try? JSONSerialization.jsonObject(with: requestData!, options: [])) 
    var tokenURLRequest = URLRequest(url: tokenURL!) 

    tokenURLRequest.httpMethod = "POST" 
    tokenURLRequest.httpBody = requestData! 
    tokenURLRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type") 

    let tokenSession = URLSession.shared 

    let tokenTask = tokenSession.dataTask(with: tokenURLRequest) { (data, response, error) in 
     if error != nil { 
      print("error getting your access token") 
      print(error!.localizedDescription) 
     } 

     if let data = data{ 
      do{ 
       if let tokenInfo = try JSONSerialization.jsonObject(with: data, options: []) as? [String:Any]{ 
        let token: String = tokenInfo["access_token"] as! String 
        print(token) 
       } 
      } catch { 
       print("Error converting to JSON") 
      } 
     } 
    } 
    tokenTask.resume() 
} 

そして、はい、私は私が右のクライアントの資格情報を置くことを確信してすべてのヘルプははるかに高く評価されるだろう、ありがとう。!

答えて

5

お試しください....

let clientId = "client_id" 
let clientSecret = "client_secret" 
let tokenURL = "https://api.yelp.com/oauth2/token" 
let grantType = "client_credentials" 


let url = NSURL(string: tokenURL as String); 

let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration()) 

let request = NSMutableURLRequest(URL: NSURL(string: tokenURL)!) 
request.HTTPMethod = "POST"; 
request.HTTPShouldHandleCookies = true 
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 


let postString = "client_id=" + clientId + "&client_secret=" + clientSecret + "&grant_type=" + grantType 
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 

let task: NSURLSessionDataTask = session.dataTaskWithRequest(request) { (data, response, error) -> Void in 
    if let data = data { 
     let response = NSString(data: data, encoding: NSUTF8StringEncoding) 
     print(response) 
    } 
} 
task.resume() 
関連する問題