Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 3655

Swift (Xcode) REST API Connection using OAuth 1

$
0
0

Quick background, I am extremely new in this realm. I am aware that this type of question has been asked before and answered successfully. The issue that I am experiencing is caused by the inability to wrap my head around the process of establishing the connection. I have spent hours (into days) searching for the answer and I am still unsuccessful. This has become my "white whale" so to speak.

I am using Xcode 9 with Swift version 4. Many of the answer I come across use Objective-C and I cannot mix and match. So I would like to UNDERSTAND why I am unable to connect and the correct process to connect so I can write the code with the understanding of what I am doing. Lastly, I have signed up (and completed) a few paid Udemy courses to try and learn the process correctly. I have been able to connect to API sources but OAuth 1 is tripping me up. Any constructive help would be incredibly appreciated.

Background:

I am attempting to connect to the Fat Secret database. I would like to connect a search bar to the food.search functionality and also the food.get for another search bar.

Company- FatSecretURL for API- platform.fatsecret.com/rest/server.apiURL to FatSecret documentation (I have gone through this MANY times)- http:// {space} platform.fatsecret. {space }com/api/Default. {space} aspx?screen=rapiauthParameters- Parameters {oauth_consumer_key - consumer_key (I have a consumer key)oauth_signature_method - "HMAC-SHA1"oauth_timestamp - The date and time, expressed in the number of seconds since January 1, 1970 00:00:00 GMT. The timestamp value must be a positive integer and must be equal or greater than the timestamp used in previous requestsoauth_nonce - A randomly generated string for a request that can be combined with the timestamp to produce a unique valueoauth_version - Must be "1.0"}

As I previously stated, the answer to my question is displayed above. I understand that part but I do not understand how to incorporate it into my code.

Past code-

        let url = URL(string: "I am unable to post more than 2 links due to my rep so I put {space} in the above url to circumvent the error. I used the listed url from the parameters")!        let task = URLSession.shared.dataTask(with: url) {            (data, response, error) in           if error != nil { print("success")   }    task.resume()

The above code is what I used to establish the connection. I receive "success" in the console so I expanded my parameters.

    let url = URL(string: "I am unable to post more than 2 links due to my rep so I put {space} in the above url to circumvent the error. I used the listed url from the parameters")!                        let task = URLSession.shared.dataTask(with: url) {                            (data, response, error) in                           if error != nil { print(error)        if let urlContent = data {                            do {                           let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObjectprint(jsonResult)    } catch {               }    task.resume()

The above code produces nothing in the console. I believe (sorry for my ignorance) that the reason I am not getting a response is because I am not sending any authorization in the request, nor am I am sending in the correct encoding. I imagine that I can create the parameters by var/let statements and then call on those statements but I am not able to see the way to do that. I could likely also store all of my connection information in a different swift file or class and call on that when I need to access data. This base signature is required with every request. I have to imagine that best practice would be setting it up that way but again, I can't visualization the process. It becomes a trial and error process that results in incredible frustration.

Again, any help would be incredibly appreciated.


Viewing all articles
Browse latest Browse all 3655

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>