How do I use OAuth from an Ubuntu Touch app?
You could create an account plugin for Trello, so that a Trello account could be created from the "Online Account" panel in the System Settings. The you could use the Ubuntu.OnlineAccounts QML module to login, like this:
import QtQuick 2.0
import Ubuntu.OnlineAccounts 0.1
Rectangle {
width: 400
height: 300
AccountServiceModel {
id: accounts
service: "trello-board"
}
ListView {
id: listView
anchors.fill: parent
model: accounts
delegate: Item {
width: parent.width
height: 60
AccountService {
id: accts
objectHandle: accountServiceHandle
onAuthenticated: { console.log("Access token is " + reply.AccessToken) }
onAuthenticationError: { console.log("Authentication failed, code " + error.code) }
}
Text {
anchors.fill: parent
text: providerName + ": " + displayName
MouseArea {
anchors.fill: parent
onClicked: accts.authenticate(null)
}
}
}
}
}
This code will get you the OAuth token. In order to create the account in the first place, you need to create the following files:
/usr/share/accounts/providers/trello.provider
/usr/share/accounts/services/trello-board.service
/usr/share/accounts/qml-plugins/trello/Main.qml
Given that Trello uses OAuth 1.0 like Flickr and twitter, just create the above files using the twitter or flickr version as a template, and modify them as needed (for the .service file, you could use flickr-sharing.service
); in trello.provider
you'll need to change the API endpoints as following:
<setting name="RequestEndpoint">https://trello.com/1/OAuthGetRequestToken</setting>
<setting name="TokenEndpoint">https://trello.com/1/OAuthGetAccessToken</setting>
<setting name="AuthorizationEndpoint">https://trello.com/1/OAuthAuthorizeToken</setting>
And of course, change the other fields (callback URL, client ID and secret) to match those you set when you registered your app with Trello. If all goes well, you'll be able to create a Trello account from the "Online Accounts" panel in the System Settings.