2017-02-25 29 views
8

Yerel URL ve URLRequest sınıflarını kullanarak bir iOS istemcisinden Yelpin Fusion API'sini kullanmak için bir OAuth jetonu almaya çalışıyorum, ancak bana bu hatayı veriyor "tokenInfo" değişkeninde:iOS Yelp OAuth Jetonu geri alma URLRequest ile dönen "client_id veya client_secret parametreleri bulunamadı

İşte
client_id or client_secret parameters not found. Make sure to provide 
client_id and client_secret in the body with the 
application/x-www-form-urlencoded content-type 

benim kodudur:

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() 
} 

Ve evet, öyleyim belli ben doğru müşteri kimlik bilgileri koymak Herhangi bir yardım çok takdir, teşekkürler.!

cevap

5

Bunu deneyin ....

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()