Search code examples
iosswifttrello

How to authenticate Trello API user with read, write permissions using OAuth1Swift


I am trying to authenticate a user getting read, write access permission to Trello API. I am using OAuth1Swift for authetication but cannot add paramaters to add a permission and app name.

How do we add these paramateers? This is my code below.

OAuthSwift Library

Trello API Docs

 func doOAuthTrello() {
    let oauthswift = OAuth1Swift(
        consumerKey:    "consumerKey",
        consumerSecret: "consumerSecret",
        requestTokenUrl:    "https://trello.com/1/OAuthGetRequestToken",
        authorizeUrl:       "https://trello.com/1/OAuthAuthorizeToken",
        accessTokenUrl:     "https://trello.com/1/OAuthGetAccessToken"
    )

    self.oauthswift = oauthswift
    oauthswift.authorizeURLHandler = getURLHandler()
    let _ = oauthswift.authorize(
        withCallbackURL: URL(string: "oauth-swift://oauth-callback/trello")!,
        success: { credential, response, parameters in
            self.showTokenAlert(name: serviceParameters["name"], credential: credential)
            self.testTrello(oauthswift)
        },
        failure: { error in
            print(error.localizedDescription, terminator: "")
        }
    )
}

Solution

  • After trying everything, this is the solution:

    lazy var paramaters:[String: String] = {
        return  [
            "consumerKey": "consumerKey",
            "consumerSecret": "consumerSecret",
            "requestTokenUrl": "https://trello.com/1/OAuthGetRequestToken?scope=read,write,account&expiration=never&name=AppName",
            "authorizeUrl": "https://trello.com/1/OAuthAuthorizeToken?scope=read,write,account&expiration=never&name=AppName",
            "accessTokenUrl": "https://trello.com/1/OAuthGetAccessToken?scope=read,write,account&expiration=never&name=AppName"
        ]
    }()
    

    The magic happens by adding ?scope=read,write,account&expiration=never&name=AppName to the url parameters