• 本機能は、まだmasterにマージされたばかりの新機能です
  • なにやらリアルなハッシュ値が表示されていますが、すべてダミーです

クライアントアプリケーションの登録

まずは、アプリケーションの登録。
/api/v1/apps にクライアント名などを登録します。

INSTANCE="https://gorone-xyz.noellabo.jp"  
CLIENT_NAME="Add account API test by curl"  
REDIRECT_URIS="urn:ietf:wg:oauth:2.0:oob"  
SCOPES="read write follow"  
WEBSITE="https://example.com"  

curl -X POST -d "client_name=$CLIENT_NAME" -d "redirect_uris=$REDIRECT_URIS" -d "scopes=$SCOPES" -d "website=$WEBSITE" -sS $INSTANCE/api/v1/apps  

実行結果はこんな感じ。

{  
  "id": "8",  
  "name": "Add account API test by curl",  
  "website": "example.com",  
  "redirect_uri": "urn:ietf:wg:oauth:2.0:oob",  
  "client_id": "03f6e6f92ec09794ddec29c2ca43a59b48d6f9f9eceaf6d35df5754b0755a777",  
  "client_secret": "2db580109b6d08b0f51bcfbdb169544b4995ecf1e1647491bb82961489d48ca5"  
}  

クライアントクレデンシャルの取得

で、取得したclient_idとclient_secretを使って、Client Credentials Grantを行います。
/oauth/token に投げて、クライアントを認証してアクセストークンを取得します。

CLIENT_ID=03f6e6f92ec09794ddec29c2ca43a59b48d6f9f9eceaf6d35df5754b0755a777  
CLIENT_SECRET=2db580109b6d08b0f51bcfbdb169544b4995ecf1e1647491bb82961489d48ca5  

curl -X POST -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "grant_type=client_credentials" -d "scope=read write" -sS $INSTANCE/oauth/token  

結果はこんな感じです。

{  
  "access_token": "94eafdf50d09a0d423638b8f289ecad0f81e14affbd1723d360f56353628db84",  
  "token_type": "Bearer",  
  "scope": "read write",  
  "created_at": 1545670803  
}  

APIによる新規アカウントの登録

さて、アクセストークンが取得できたので、いよいよアカウントを登録します。
/api/v1/accounts に、ユーザー名、メールアドレス、パスワードとともに、Agreemetというパラメータを渡します。
これは、アプリを実装する際に、ユーザーに何らかの確認を行って、了解したことを伝えるパラメータです。インスタンスの説明、利用規約などを表示して、ユーザーに確認を行ってから有効にしてください。
アクセストークンはヘッダで渡します。

ACCESS_TOKEN=94eafdf50d09a0d423638b8f289ecad0f81e14affbd1723d360f56353628db84  
USER_NAME=test  
EMAIL="test@example.com"  
PASSWORD=12345678  
AGREEMENT=1  

curl -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -d "username=$USER_NAME" -d "email=$EMAIL" -d "password=$PASSWORD" -d "agreement=$AGREEMENT" -sS $INSTANCE/api/v1/accounts  

実行結果はこんな感じです。

{  
  "access_token": "88616a2507feacb614b3a3847cbcc3d3f421c512149c248dded4a9e3388cf201",  
  "token_type": "Bearer",  
    "scope":"read write follow",  
  "created_at": 1545670929  
}  

ここで取得したアクセストークンは、先のクライアントアプリのアクセストークンとは異なり、ユーザーのアクセストークンになります。ログインした直後に取得できるアクセストークンに相当するものです。保存しておきましょう。

さて、これを使って早速いろいろやりたいところですが、この段階ではまだアカウントが有効になっていません。
先ほど登録したメールアドレスに、登録を有効にするためのアドレスを記載したメールが届きますので、それを使ってアカウントを有効にします。アプリでは、アカウント有効になってからでないと、各種操作が行えません。