2017-02-25 7 views
8

मैं मूल URL और URLRequest कक्षाओं का उपयोग करके किसी आईओएस क्लाइंट से येलप फ़्यूज़न एपीआई का उपयोग करने के लिए ओएथ टोकन पुनर्प्राप्त करने का प्रयास कर रहा हूं, लेकिन यह मुझे यह त्रुटि दे रहा है "tokenInfo" चर में: है कि मैं सही ग्राहक साख डालURLRequest के साथ आईओएस Yelp OAuth टोकन पुनर्प्राप्ति "क्लाइंट_आईडी या क्लाइंट_सेक्रेट पैरामीटर को वापस नहीं मिला

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

और हाँ, मैं कर रहा हूँ कुछ किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद:

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 

यहाँ मेरी कोड है।!

उत्तर

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() 
संबंधित मुद्दे