Toodledo > API

下位ページ

Content


認証かたデータの取得・編集まで


流れ

  1. Toodledoの認証ページに遷移
  2. ユーザーが、Toodledoアカウントにサインインして、アプリを承認
  3. 認証コードと共にアプリケーションにリダイレクト
  4. アプリケーションの秘密鍵を使って、トークン(とリフレッシュトークン)を取得
    • トークンをアプリに保管し、これを使ってAPIリスエストを実行する。
    • トークンが失効したら、リフレッシュトークンを使って新しいトークンを取得する。
    • リフレッシュトークンも失効したら、最初の認証からやり直し。

1.遷移

  • ベースURL https://api.toodledo.com/3/account/authorize.php?
  • response_type=code(決め打ち)
  • client_id 登録したID client_id=YourClientID
  • state クロスリスエストでの偽装を防ぐための(毎回)ランダムなコード state=YourState
  • scope アクセスできる情報の範囲 例:scope=basic%20tasks ※半角スペースは%20

https://api.toodledo.com/3/account/authorize.php?response_type=code&client_id=YourClientID&state=YourState&scope=basic%20tasks

scopeの種類

  • basic - アカウント情報
  • tasks - タスク
  • notes - ノート
  • outlines - アウトライン
  • lists - リスト
  • share - 共同作業者の情報
  • write - 上記の情報の編集を許すかどうか

2.Toodledoのサイトでアプリを承認

Toodledoのユーザが、アプリケーションによるToodledoデータの操作を承認したら、(Toodledo上で登録した)リダイレクトURLへ遷移される。このとき、URIとしては、以下の情報が与えられる。

  • code : 次のステップでアクセストークンを手に入れるためのコード
  • state : 承認のリクエストが来た際のstate情報。cross site request forgery を避けるために使用する。
  • error : 何かしらのエラー(ユーザーが要求を棄却したとか)がある場合はここに記録される。

REDIRECT_URI?code=49075c51ed30133f909f7c0dd03996e8f395be57&state=YourState

Javaなら、HttpServletRequest requestで
request.getParameter("hoge")
で取得
Java/JSP

リダイレクトのあ使い方には2種類ある。
  1. プロジェクトにカスタムURLをセットして、処理させる
    • これは、デバイスに "myToodledoApp://authorize" のような支持を出して、アプリケーションを起動させるような使い方。You would redirect the user to the device's built in web browser and the web browser will automatically launch your app with the authorization code in your apps launch options.
  2. カスタムWEBヴューをつくる
    • The second option is to keep the user in your app by implementing a custom web view (like an iframe) that contains our authorization page. You can then override the redirect method and grab the returned URL without actually fetching it. In this case the redirect URI would never be called, so it doesn't need to be an actual valid URI, although for obvious security reasons you should not have the Redirect URI go to valid URL not controlled by you.

There are OAuth2 libraries for iOS, Android and other platforms that can help with this and we have provided some sample code as well.

3.リダイレクトとパラメータ

パラメータとともに元ページにリダイレクトされてくる。
リダイレクト先はToodledoに登録しておく。

どこのサイトを書いても、後に code=aaaa&state=bbbbのようについて来る

パラメータ

  • code : アルファベットの文字列のコード。次のステップでアクセスするトークンを取得するのに用いる
  • state : 認証リクエストにともに送った state。cross site request forgery を避けるために、自分で送った state を比較し確認する。
  • error : 認証リクエストが拒否されたりエラーを起こした場合に、この文字列が表示される。

連携元がウェブサイトではない場合
Monacaでつくるアプリの場合

トークンの取得

認証コードの取得後、トークンとの交換を行う。
SSLで暗号化されたリクエストを クライアントIDと秘密鍵と認証コードを使って/3/account/token.php にポスト(POST)する。
そのレスポンスはアクセストークンとリフレッシュトークンを含んでいる。
トークンのリクエスト時に、アプリケーションの幾つかの情報を送ることもできる。
それらは分析ページで見ることができる。つまり、どんなデバイスが使われるかなどの分析ができる。


クライアントIDと秘密鍵はそれぞれ、client_id、client_secret、として、下記のパラメータと同じようにしても渡せる。
Javaでのプログラミング

パラメータ

  • grant_type : "authorization_code"という文字列.(必須)
  • code : 認証コード(必須)
  • vers : アプリケーションのバージョン。整数値。(任意)
  • device : アプリケーションが動作しているデバイス/プラットフォーム(任意)
  • os : アプリケーションが走っているOSのバージョン。整数値。(任意)
  • f : レスポンスのフォーマット。json か xml。デフォルトはjson(任意)

レスポンス

JSONで、キーと値の組で戻ってくる
  • access_token : アルファベット文字列
  • expires_in : アクセストークンの有効期限。7200秒の固定(のはず)
  • token_type : なに?Bearer
  • scope : スコープ。スペース区切りの文字列
  • refresh_token : アルファベット文字列

リフレッシュトークン

access_tokenが時間切れで失効した場合には、refresh_tokenを使って新しいaccess_tokenを取ってくる。
refresh_tokenの有効期限は30日。これが切れたら認証し直し。


パラメータ

  • grant_type : "refresh_token"という文字列.(必須)
  • refresh_token : refresh_token(必須)
  • vers : アプリケーションのバージョン。整数値。(任意)
  • device : アプリケーションが動作しているデバイス/プラットフォーム(任意)
  • os : アプリケーションが走っているOSのバージョン。整数値。(任意)
  • f : レスポンスのフォーマット。json か xml。デフォルトはjson(任意)

エラーコード


token API endpointから受け取るエラーコード(メッセージ)
Here is a list of the error messages that you may receive from the token API endpoint.

  • 101 : SSLで接続していない
  • 102 : There was an error requesting a token.
  • 103 : トークンのリクエスト数が上限を超えた

サンプル

JSON:
{"errorCode":101,"errorDesc":"SSL connection required"}

XML:
<error id="101">SSL connection required</error>
最終更新:2017年09月29日 22:42