約 3,753,061 件
https://w.atwiki.jp/api_programming/pages/166.html
http //developer.garmin.com/downloads/connect-iq/monkey-c/doc/Toybox/WatchUi/Picker.html Class Toybox WatchUi Picker This is the on-screen representation of a generic picker. 全てのデバイスで同じような一般レイアウトを持つが、印象はデバイス固有である印象を与える。 ピッカーは一つもしくはそれ以上の選択するオブジェクト、タイトル、次・前を表す矢印、そして確認ボタンで構成される。次・前矢印と確認ボタンはデバイス固有だが、もし必要なら上書きできる。ピッカーは WatchUi.pushView() でプッシュされ、PickerDelegate 。各選択値に何を表示するかために、PickerFactory が必要になる A Picker uses a PickerFactory to decide what to display to the user. It is capable of displaying any number of entries for the user to choose from. For instance, if the PickerFactory was [new NumberFactory(), new Ui.Text( text= “-”), new NumberFactory()] then the Picker will have three entries a choosable number, a non-choosable “-”, and another choosable number. Since 1.2.0 Instance Method Summary (Picker) initialize(options) constructor Constructor. (Object) setOptions(options) Set the options for the Picker. Methods inherited from View #findDrawableById , #onHide, #onLayout, #onShow, #onUpdate, #setLayout Constructor Details (Picker) initialize(options) Constructor Parameters options (Dictionary) — @see Picker#setOptions Since 1.2.0 Instance Method Details (Object) setOptions(options) Set the options for the Picker. Parameters options (Dictionary) — the options for the Picker Options Hash (options) title (Drawable) — the title for the Picker. Required. pattern (Array) — an Array of [Object] for the Picker to display. If the Array entry is a PickerFactory then it is presented to the user to make a choice. If it is a Drawable then it is display only. Required. defaults (Array) — an Array of [Number] indicating the starting index for each entry in pattern. Optional. nextArrow (Drawable) — a custom next icon for the Picker. Optional. previousArrow (Drawable) — a custom previous icon for the Picker. Optional. confirm (Drawable) — a custom confirm icon for the Picker. Optional. Since 1.2.0 Generated on Thu Feb 18 15 00 18 2016 by yard 0.8.7.6 (ruby-2.2.1).
https://w.atwiki.jp/api_programming/pages/246.html
https //qiita.com/lobmto/items/c1a220a12ec9c1fad560 1. Google API Consoleの設定 何も考えずにボタンをクリックしていったら、Google Cloud Platform に Quickstart というプロジェクトが作成されていた。 指定のプロジェクト下に作る場合は、上記サイトを参照。 とりあえず、このまま進めよう。 Google Calendar API が登録されているかどうか確認しようと、プロジェクトを開いてみるが、サービス確認のページに行くと、「これから開始」みたいなページに飛ばされて、確認ができない。そのため、Quick Start の Hallo World プログラムを登録してみる。 登録後は「APIとサービス」も開けるようになった。ダッシュボードの下の方にあるAPIの中にGoogle Calendar API が登録されている。 「認証情報」を見ると、先程何も考えずに登録したClient ID が表示されているので、Qiita 記事のこのステップはパス。 2. 必要なライブラリの準備 Anaconda の環境で、pip を使ってはいけない、的な話を聞いたことがあったが、Anaconda Navigator 上では google-api-python-client が出てこないので、やむを得ず pip でインストールする。それにあたっては、こちらを見てみた。 https //qiita.com/mckeeeen/items/d4cbe4a16a102157f40c google-api-python-client google-auth-httplib2 google-auth-oauthlib サンプルコードの実行 自分の使っている環境下に、client.josn を移し、quickstart.py をつくって、内容はコピペ。 動いた。ちなみに、この先10個のイベントを取得して、コンソールに表示している。 認証 認証ページに遷移し、「詳細」から進んでいって、「読み出し」の認証。 終わると token.pickle が出来上がっている。
https://w.atwiki.jp/asato/pages/319.html
本 文献 プレゼン Exploring the Intent behind API Evolution A Case Study, WCRE 2011 User Interface Principles in API Design User Interface Principles in API Design (PDF) How to Design a Good API and Why it Matters (PDF) 人気のAPI/フレームワークを作るための39カ条 本 Practical API Design Confessions of a Java Framework Architect 文献 Using Twinning to Adapt Programs to Alternative APIs, ICSE 2010 Mining API Mapping for Language Migration, ICSE 2010 Improving API Usage through Detection of Redundant Code, ASE 2009 What Makes APIs Hard to Learn? Answers from Developers, IEEE SOftware 2009 Study of an API migration for two XML APIs, SLE 2009 The Implications of Method Placement on API Learnability., FSE 2008 プレゼン Open APIs State of the Market
https://w.atwiki.jp/api_programming/pages/155.html
Module Toybox Sensor 下位ページ Info Contents Module Toybox SensorDefined Under Namespace Constant Summary Instance Method Summary Instance Method Details(Object) enableSensorEvents(listener) (Sensor.Info) getInfo (Array) setEnabledSensors(sensors) Module Toybox Sensor App Types Widget, App Requires Permission Sensor Defined Under Namespace Classes Info Constant Summary Remote system sensors that can be enabled SENSOR_BIKESPEED = 0 Since 1.0.0 SENSOR_BIKECADENCE = 1 Since 1.0.0 SENSOR_BIKEPOWER = 2 Since 1.0.0 SENSOR_FOOTPOD = 3 Since 1.0.0 SENSOR_HEARTRATE = 4 Since 1.0.0 SENSOR_TEMPERATURE = 5 Since 1.0.0 Instance Method Summary (Object) enableSensorEvents(listener) Use enableSensorEvents() to request a sensor event. (Sensor.Info) getInfo Use getInfo() to retrieve the current Sensor.Info. (Array) setEnabledSensors(sensors) Use setEnabledSensors() to request system sensors. Instance Method Details (Object) enableSensorEvents(listener) Use enableSensorEvents() to request a sensor event. This enables sensor events at 1Hz. Parameterslistener (Method) Method Object to call with sensor updates. Null for no listener Since 1.0.0 (Sensor.Info) getInfo Use getInfo() to retrieve the current Sensor.Info Returns (Sensor.Info) object with current information. Since 1.0.0 (Array) setEnabledSensors(sensors) Use setEnabledSensors() to request system sensors. This will also enable the system sensors if possible. Parameterssensors (Array) Array of Sensor types to enable, or [] to disable all sensors Returns (Array) Array of requested sensors that were available Since 1.0.0
https://w.atwiki.jp/directx/pages/31.html
DirectMusicを使用してMIDIまたはWAVEファイルを再生します #include d3dx9.h #include dmusici.h #define SAFE_RELEASE(p) {if(p){(p)- Release();(p)=NULL;}}//安全に解放する //#define FileName test.mid #define FileName test.wav LPDIRECT3D9 g_pD3D = NULL;//Direct3D9 LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;//レンダリングデバイス LPD3DXFONT g_pFont = NULL;//フォント // DirectMusicの変数 IDirectMusicPerformance8* g_pPerformance = NULL; // パフォーマンス IDirectMusicLoader8* g_pLoader = NULL; // ローダー IDirectMusicAudioPath8* g_pDefAudioPath = NULL; // デフォルト・オーディオパス // DirectMusicのセグメント IDirectMusicSegment8* g_pSegment = NULL; // セグメント IDirectMusicSegmentState8* g_pSegmentState = NULL; // セグメントの状態 IDirectMusicSegmentState* ppSegmentState = NULL; MUSIC_TIME g_SegLength = 0; // セグメントの長さ //テキスト描画 void TextDraw(LPD3DXFONT pFont,char* text,int X,int Y) { RECT rect={X,Y,0,0};//描画位置 //スプライトポインタ(無くても良し),描画文字,文字数(-1で全部),描画範囲,フォーマット,色 pFont- DrawText(NULL, text, -1, rect, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB(255, 0, 0, 0)); } //Direct3D初期化 HRESULT InitD3D( HWND hWnd ) { //Direct3Dを生成する if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION))){return E_FAIL;} //デバイス生成用のパラメーター D3DPRESENT_PARAMETERS d3dpp;//パラメーター構造体 ZeroMemory( d3dpp, sizeof(d3dpp) );//ゼロで初期化 d3dpp.Windowed = TRUE;//ウインドウモードで起動 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;//バックバッファのスワップエフェクト Direct3Dにスワップエフェクトをまかせる d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;//バックバッファのフォーマット今表示されているモニタの設定と同じ d3dpp.BackBufferCount = 1;//バックバッファの数 d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;//マルチサンプリングは行わない d3dpp.MultiSampleQuality = 0;//マルチサンプリングは行わないので0 d3dpp.EnableAutoDepthStencil = TRUE;//Direct3Dに深度バッファの管理をまかせる d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//深度バッファのフォーマット(通常はこの値で問題ない) d3dpp.hDeviceWindow = hWnd;//カバーウィンドウ=アプリケーションのウィンドウ d3dpp.Flags = 0;//フラグは使わない d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;//今のリフレッシュレートをそのまま使う d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;//モニタの垂直回帰を待つ //Direct3Dデバイスの生成 HAL(ハードウェアアクセラレーション) if(FAILED(g_pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, g_pd3dDevice))){ //HALが駄目ならHEL(ソフトウェアエミュレーション) if(FAILED(g_pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, d3dpp, g_pd3dDevice))){ //駄目なら終了 return(E_FAIL); } } //フォントの生成 MSゴシック //デバイス,文字高さ,文字幅,フォントスタイル,ミップマップのレベル,斜体にするかどうか,文字セット,出力精度,出力品質,フォントピッチとファミリ,フォント名,フォントポインタ HRESULT hr = D3DXCreateFont( g_pd3dDevice, 20, 0, FW_HEAVY, 1, false, SHIFTJIS_CHARSET, OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE, MS ゴシック , g_pFont ); if FAILED(hr){return(E_FAIL);} return S_OK; } //終了時解放処理 VOID Cleanup() { SAFE_RELEASE(g_pFont); SAFE_RELEASE(g_pd3dDevice); SAFE_RELEASE(g_pD3D); CoUninitialize(); } //レンダリング VOID Render() { //デバイスが無いなら終了 if(NULL==g_pd3dDevice){return;} //バックバッファのクリア g_pd3dDevice- Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 ); //シーンの開始 if(SUCCEEDED(g_pd3dDevice- BeginScene())) { //ここに処理内容を書く MUSIC_TIME seg_seek = 0; if(g_pSegmentState){g_pSegmentState- GetSeek( seg_seek);} char buf[255]; TextDraw(g_pFont, MIDI,WAVEの再生 キーダウンで再生開始 ,0,0); TextDraw(g_pFont,ltoa(seg_seek,buf,10),0,40); //シーンの終了 g_pd3dDevice- EndScene(); } //バックバッファを表画面に反映させる g_pd3dDevice- Present( NULL, NULL, NULL, NULL ); } //DirectMusic初期化 void DMInit(HWND* hWnd) { // パフォーマンスの作成 CoCreateInstance(CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance8, (void**) g_pPerformance ); // パフォーマンスの初期化 g_pPerformance- InitAudio( NULL, // IDirectMusicインターフェイスは不要 NULL, // IDirectSoundインターフェイスは不要 *hWnd, // ウィンドウのハンドル DMUS_APATH_SHARED_STEREOPLUSREVERB, // デフォルトのオーディオパス・タイプ 64, // パフォーマンス・チャンネルの数 DMUS_AUDIOF_ALL, // シンセサイザの機能 NULL); // オーディオ・パラメータにはデフォルトを使用 // デフォルト・オーディオパスの取得 g_pPerformance- GetDefaultAudioPath( g_pDefAudioPath); // ローダーの作成 CoCreateInstance(CLSID_DirectMusicLoader, NULL, CLSCTX_INPROC, IID_IDirectMusicLoader8, (void**) g_pLoader); // ローダーの初期化(検索パスをカレント・ディレクトリに設定) CHAR strPath[MAX_PATH]; DWORD i = GetCurrentDirectory(MAX_PATH, strPath); // マルチ・バイト文字をUNICODEに変換 WCHAR wstrSearchPath[MAX_PATH]; MultiByteToWideChar(CP_ACP, 0, strPath, -1, wstrSearchPath, MAX_PATH); // ローダーに検索パスを設定 g_pLoader- SetSearchDirectory(GUID_DirectMusicAllTypes, wstrSearchPath, FALSE); } //セグメント初期化 void InitSegment() { // セグメント作成 WCHAR wstrFileName[MAX_PATH]; MultiByteToWideChar(CP_ACP, 0, FileName, -1, wstrFileName, MAX_PATH); g_pLoader- LoadObjectFromFile(CLSID_DirectMusicSegment, IID_IDirectMusicSegment8, wstrFileName, (LPVOID*) g_pSegment); // セグメントの長さを取得 g_pSegment- GetLength( g_SegLength); // バンドのダウンロード(手動) g_pSegment- Download( g_pPerformance ); } //セグメント解放 void ReleaseSegment(void) { // 演奏停止 if(g_pPerformance){g_pPerformance- Stop(NULL, NULL, 0, 0);} // 音色データのアンロード if(g_pSegment){g_pSegment- Unload(g_pPerformance);} // セグメントを開放 SAFE_RELEASE(g_pSegmentState); SAFE_RELEASE(g_pSegment); } //DirectMusic解放 void ReleaseDMusic(void) { // ローダを開放 SAFE_RELEASE(g_pLoader); // デフォルト・オーディオパスを開放 SAFE_RELEASE(g_pDefAudioPath); // パフォーマンスを開放 SAFE_RELEASE(g_pPerformance); } //メッセージプロシージャ LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_KEYDOWN // キーが押された g_pPerformance- StopEx(g_pSegment,0,0); g_pPerformance- PlaySegmentEx(g_pSegment, NULL, NULL, NULL, 0, ppSegmentState, NULL, g_pDefAudioPath); ppSegmentState- QueryInterface(IID_IDirectMusicSegmentState8,(LPVOID *) g_pSegmentState); break; case WM_DESTROY //終了時 Cleanup(); PostQuitMessage(0); return 0; case WM_PAINT //ウインドウ描画時 Render(); return 0; case WM_SIZE //ウインドウサイズ変更時 InvalidateRect(hWnd,NULL,true);//画面更新 return 0; } return DefWindowProc( hWnd, msg, wParam, lParam ); } //メイン関数 INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT ) { //COM初期化 CoInitialize( NULL ); //ウインドウクラスの登録 WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, Window1 , NULL }; RegisterClassEx( wc ); //タイトルバーとウインドウ枠の分を含めてウインドウサイズを設定 RECT rect; SetRect( rect,0,0,640,480); AdjustWindowRect( rect, WS_OVERLAPPEDWINDOW, FALSE); rect.right=rect.right-rect.left; rect.bottom=rect.bottom-rect.top; rect.top=0; rect.left=0; //ウインドウの生成 HWND hWnd = CreateWindow( Window1 , Hello DirectX9 World !! , WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rect.right, rect.bottom, NULL, NULL, wc.hInstance, NULL ); //Direct3D初期化 if(SUCCEEDED(InitD3D(hWnd))) { DMInit( hWnd); InitSegment(); //ウインドウ表示 ShowWindow(hWnd,SW_SHOWDEFAULT); UpdateWindow(hWnd); //メッセージループ MSG msg; while( GetMessage( msg,NULL,0,0)) { TranslateMessage( msg); DispatchMessage( msg); } } ReleaseSegment(); ReleaseDMusic(); UnregisterClass( Window1 ,wc.hInstance); return 0; }
https://w.atwiki.jp/arprojectfun/pages/29.html
ノート Direct3D 入門 荒川が参考にしたブログの記事とメモ書き程度ですが、 自分のためにもまとめておきます。参考になれば・・ 勉強会の時には、解説よりも開発環境の確認のために まず、一通りのプログラムのビルドができることを確認した方がいいかも プロジェクトの作成 Visual Studio を起動させる。 上部のメニューから [ファイル(F)] - [新規作成(N)] - [プロジェクト(P)... Ctrl+Shift+N] を選択する。 左の「プロジェクトの種類(P) 」から「Visual C++」を選択し、 右の「テンプレート(T) 」から「Win32 プロジェクト」を選択して 適当な「プロジェクト名(N) 」を記入した後、[OK]ボタンをクリックする。 「Win32 アプリケーションウィザード」というウィンドウが表示されるので、 何もせずに[完了]ボタンをクリックする。 テキスト 2Dポリゴンの表示まで BMP画像を表示する Xファイルの3Dモデルの表示 1人称視点で3D空間内を歩く 追記情報とか 名前 コメント
https://w.atwiki.jp/fifa-pc/pages/28.html
動作環境 今作は全体的に要求スペックが上がりましたが、キーとなるのは以下の3つですかね。 ①4コア以上のCPU ②64bitのWindowsOS ③DirectX11対応のVGA Recommended Specifications OS Windows V/7/8/8.1 -64-bit CPU Intel i5-2550K @ 3.4Ghz RAM 8GB Hard Drive Space Required 15.0 GB Supported Video Cards ATI Radeon HD 6870, NVIDIA GTX 460 DirectX 11.0 Minimum Required Specifications OS Windows V/7/8/8.1 -64-bit CPU Intel Q6600 Core2 Quad @ 2.4Ghz RAM 4GB Hard Drive Space Required 15.0 GB Minimum Supported Video Cards ATI Radeon HD 5770, NVIDIA GTX 650 DirectX 11.0 ベンチマーク比較サイト CPU/GPU http //www.cpubenchmark.net/ GPU http //www.dospara.co.jp/5shopping/share.php?contents=vga_def_parts
https://w.atwiki.jp/api_programming/pages/80.html
下位ページ Content タスクの編集 http //api.toodledo.com/3/tasks/index.php#retrieving タスクの編集 http //api.toodledo.com/3/tasks/edit.php 一度に50個のタスクまで編集できる。 POST idは必須、その他はオプション 加えて、リピートタスクをリスケジュールしたい場合は reschedule変数 を1とすることで実行できる。完了タスクであること 期日と繰り返しの値が設定されていること。 "Tasks" はJSONオブジェクトとして作成し、POSTでAPIに送る エンコードを忘れずに。 セットしたいフィールドのみ指定すれば良いし、効率の観点からも、そうすべき。 http //api.toodledo.com/3/tasks/edit.phpaccess_token=yourtoken tasks=[{"id" "1234","title" "My Task"},{"id" "1235","title" "Another Task","star" "1"},{"id" "5678","title" "Invalid"}] fields=folder,star tasksの中身は "id" "1234" でないとダメ。 コンマで区切ってあるから、"が無くてもいいかな、 でもいいかな、と思ったが、ダメだった。 成功した場合には編集したタスクが返ってくる 失敗した場合はエラーのタスクとして返ってくる。 [{"id" 1234,"title" "My Task","modified" 1281990824,"completed" 0,"folder" 0,"star" 0},{"id" 1235,"title" "Another","modified" 1280877483,"completed" 0,"folder" 0,"star" 1},{"errorCode" 605,"errorDesc" "Invalid task ID","ref" "5678"}]
https://w.atwiki.jp/api_programming/pages/183.html
前置き 地道な Get,Postの処理で認証を受けて、SpreadSheet の情報を取り出したりはできたものの、自前でClassをどんどん作って拡張させていく感じだったので、ライブラリつかいたひ、となって、そのためには、認証とかからこれを使ったほうが良いんじゃないか、ということで挑戦。ただ、Servletとしての説明が載った日本語のサイトがあんまりないので(GData以前はそれなりにある感じ)、いろいろ情報を見ながらトライ&エラーで作ってみた。 基本はここを参照したものの、初心者は四苦八苦。 Google API Client Libraries 流れ自体は通常の認証と変わらないものの、APIでいろいろやってくれる分、中身がわからないので、どこで何をしているのかわからん。 https //developers.google.com/identity/protocols/OAuth2 そして、作って、とりあえず使えそうな見通しがたったところで、 Google Identity Platform こっちの情報をさんしょうすれば、JavaAPIとかいらんかったのか?とか思いながら、まだちゃんと読んでいない。 とりあえずいろいろ集めた情報から サーブレットを使ったパターンとしては AbstractAppEngineAuthorizationCodeServlet.classを実装したクラスで、認証に必要な情報を載せて、リダイレクトさせるGoogleAuthorizationCodeFlow を内部で作って、使用している。上記のクラスを実装しなくても、本来はこれだけあればいい? 認証ページを表示させて、デフォルトで /oauth2callback にリダイレクトさせる。 codeをつけて、リダイレクトさせる。 AbstractAppEngineAuthorizationCodeCallbackServlet.classを実装したクラスで、結果を受ける。リダイレクトされたあとだから、イランと思ったら、ここでもGoogleAuthorizationCodeFlow を内部で作って処理していた。 認証に成功すると Credential がもらえる。 この認証後に、どのページからでも使える?ように access token を Cookie に保存して、再利用することにした。他のやり方がまだわからない。 実装までの四苦八苦 事前準備 使うサイト(Web App)を登録する作業は、Java API を使おうが使うまいが同じ。ここで Client ID とか、Client Secret とかを登録、確認しておく。 また、リダイレクト先も登録。ここで登録したリダイレクト先と、この先のプログラム上で指定しているリダイレクト先が違うとエラーになる。何もしないと多分 /oauth2callback がプログラム内で使用されるので、とりあえずこれを指定した(そしてそういうプログラムを作った)ほうが早いのでは? 認証ページを表示させるところまで。 AbstractAppEngineAuthorizationCodeServlet.classを実装。デベロッパサイトに注意書きとサンプルコートが。 注意:ログインしているユーザがいないと getUserID() が NullPointerException を投げる。- web.xml に次の記述がこんな感じの記述が必要。 security-constraint web-resource-collection web-resource-name any /web-resource-name url-pattern /* /url-pattern /web-resource-collection auth-constraint role-name * /role-name /auth-constraint /security-constraint role-nameの指定で、なんやかんやできるみたいだが。 このページのサンプルコードをそのまま使ったが、オーバーライドすべき initializeFlow 内での AuthorizationCodeFlowの生成で指定するGenericURLとかわからない。 しかしGoogleAuthorizationCodeFlowという拡張されたクラスがあって、こちらのBuilderクラスではGenericURLの指定はなく、代わりにClientID、ClientSecretの指定で済むので、こちらでインスタンスを作る。なお setApprovalPrompt("auto") setAccessType("offline") も指定してbuild() これで動かすとデータへのアクセス許可を聞くサイトへ飛んだ。 リダイレクト後(codeが発行された後の処理) 認証画面へのリダイレクトと同じように、コールバック用のサーブレットとしてAbstractAppEngineAuthorizationCodeCallbackServletを実装。 この中でもAuthorizationCodeFlowが出てくるが、やっぱりGoogleAuthorizationCodeFlowで実装。 このサーブレットでcodeを受け取ると、自動的に(flowがあるから?)access tokenとの交換をしてくれるらしい。オーバーライドする関数として onSuccess onError があって、成功していればonSuccessが処理される。ここの引数としてcredentialがあるので、getAccessTokenでトークンを保存しておけば、しばらくはこれを使ってAPIにアクセスできる。ただ、私は保存の仕方がわからなかったので、Cookieに保管している。 access tokenを受け取った後、実際にAPIを動かす 今回の主目的はSheets API、Calendar API だったので、とりあえずSheets APIで確認。 GoogleCredential gc = new GoogleCredential.Builder().build(); とやるだけで、勝手にどこかに保管されたaccess tokenとか拾ってくれるか、と思ったが、そこまで優しくない。(GoogleCredential.getAccessToken()はnullだったので)Cookieからaccess tokenを取り出して、credentialにセットして Sheets sheet = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, gc).setApplicationName(APPLICATION_NAME).build(); でオブジェクト作って、叩いたら、データ取り出せた。サンプルは[[Google Sheets API Java Quickstart https //developers.google.com/sheets/quickstart/java]]のmain内の部分。
https://w.atwiki.jp/api_programming/pages/70.html
下位ページ Content 取得 Toodledo 取得 https //api.toodledo.com/3/tasks/index.php#retrieving 検索パラメータにマッチしたタスクのリストを返す APIコマンド tasks/get.php Method GET, POST 検索パラメータは以下のとおり。使えるパラメータは少なく、folderやcontextでの絞り込みは(この時点では)できないらしい。レスポンスデータにfolderやcontextsが含まれるように情報を取得して、クライアント側で並べ替えたり、絞り込みを掛ける。 before この時間以前に更新したタスクを探索 UNIX時間。 after この時間以降に更新したタスクを探索 UNIX時間。 comp 未完了、完了の選択。 0 未完のみ、1 完了のみ、無しor-1 両方 id タスクID。既に取得したいタスクのIDがわかっている場合に用いる。 start スキップする数。数ページに渡るようなページを作成する場合に使用する。 デフォルト値は0 num 取得するタスク数。数ページに渡るようなページを作成する場合に使用する。 デフォルト値、最大値ともに1000 fields レスポンスの情報にほしいフィールドをコンマ区切りで指定する。レスポンスを良くするためにも極力不用な情報は省く。常にid,title,modified,completedフィールドは返される(ので、パラメータには含めない。含めるとエラーになるかも)Toodledo/API/Task/情報フィールド fields=folder,star,priority http //api.toodledo.com/3/tasks/get.php?access_token=yourtoken after=1234567890 fields=folder,star,priority errorの場合(例) {errorCode=2, errorDesc=Unauthorized, errors=[{status=2, message=Unauthorized}]}