LoginSignup
1
0

【VSCode】分散型SNS「Bluesky」のPDSでBlueskyアカウントやadminでのAPIの実行方法

Last updated at Posted at 2024-01-13

今回は分散型SNS「Bluesky」のSandboxのPDSでのAPIの実行方法について書いていきたいと思います。
なお、僕はAPIについては最近触ったばかりの初心者なので、間違っていることがあるかもしれません。その場合はコメントにてご指摘して下さると幸いです。

APIの実行方法

Visual Studio Codeに拡張機能「REST Client」をインストールします。
インストールが終わったらVisual Studio Code上で拡張子.httpのファイルを新規作成します。
そしてそこにAPIを打っていきます。

Visual Studio Codeで手軽にAPIを試せる REST Client 拡張の紹介
https://zenn.dev/protoout/articles/26-vscode-rest-client

xsky.worldのところは自分のPDSのドメインに変更して下さい。
identifierはBlueskyで作成したアカウントのユーザーID、passwordはパスワードを入力して下さい。

POST https://xsky.world/xrpc/com.atproto.server.createSession HTTP/1.1
content-type: application/json

{
    "identifier": "louis.xsky.world",
    "password": "パスワード"
}

入力したら保存して、上部にあるSend Requestをクリックします。

HTTP API (XRPC) | ATプロトコル
https://atproto.com/specs/xrpc

最初のログインでは、com.atproto.server.createSessionパスワードとアカウント識別子 (ハンドルまたは登録済みの電子メール アドレスなど) を含むエンドポイントが使用されます。これはrefreshJwt(および初期のaccessJwt) を返します。

accessJwtをメモしておきます。
※以下のdidやaccessJwtはあくまでも例です。

{
  "did": "did:plc:even7dqs7gnydunotsj4hiiz",
  "handle": "louis.xsky.world",
  "email": "bskymainmail@gmail.com",
  "accessJwt": "mZedSZmE4yLAVZUy2IIwta8YwlyZGInuDDAFiksn5NDIMdLDUWuTVW3R24vLFmBztdN82rGp70VrOwtProeijBjlFEig3qIYIzAOavb7ul0XZcY9FmzJNXQ6Y7s8O6Gud2aet21po9rS2HRYwoamxh3HObnzaO3wo2TBrQeIp45GWbimQvq5W8Dpdj66CyMMeuTl8Kusl1BtHmp8iLEldgxeltC8p",
  "refreshJwt": "FkOiBajfII9UQewZhCT5FVGpGwcIoZ50pPi91wqdUpwJBQGd16DqNA2c9mHts9BZnE9b47yG2O7m8G6r8kJYXI4j6rPl0NbgRwGqosLsRgefi6mUDzs5uWVZwar4mWgZgiY5Q3oIYBjgM9x5jhIoF9HYwb4zn9DtokTYHO7jP8rUAbMD39iR8kAwbdzx9gvlYiY9xGjdougp1ALsyeFJGuphVzeec2BcDyzynDpLmk4NmgY4Gw4Mlk8BjVgKH0s2GVNi3uzZyjfHGcFFU2WZSzovDzMw2Qh4o5tM"
}

プロフィールを取得

プロフィールを取得します。
Bearerの後は先程メモしたaccessJwtを入力します。

GET https://xsky.world/xrpc/app.bsky.actor.getProfile?actor=louis.xsky.world HTTP/1.1
Authorization: Bearer mZedSZmE4yLAVZUy2IIwta8YwlyZGInuDDAFiksn5NDIMdLDUWuTVW3R24vLFmBztdN82rGp70VrOwtProeijBjlFEig3qIYIzAOavb7ul0XZcY9FmzJNXQ6Y7s8O6Gud2aet21po9rS2HRYwoamxh3HObnzaO3wo2TBrQeIp45GWbimQvq5W8Dpdj66CyMMeuTl8Kusl1BtHmp8iLEldgxeltC8p

するとプロフィールが取得出来ます。

{
  "did": "did:plc:even7dqs7gnydunotsj4hiiz",
  "handle": "louis.xsky.world",
  "displayName": "Louis",
  "description": "ソニーやガジェット、分散型SNSが好き。HTML・CSSやLinuxサーバーに興味がある。2024年01月14日からBlueskyのSandboxのPDS、運営中。",
  "avatar": "https://example.com/comavatar@jpeg",
  "banner": "https://example.com/testbanner@jpeg",
  "followsCount": 3,
  "followersCount": 3,
  "postsCount": 22,
  "indexedAt": "2099-02-29T03:22:45.326Z",
  "viewer": {
    "muted": false,
    "blockedBy": false
  },
  "labels": []
}

adminで発行したinvite codeを見るには

Visual Studio Code上で別の拡張子.httpのファイルを新規作成します。

自分のサーバーにログインし、pds.envPDS_ADMIN_PASSWORDをコピーします。

僕の環境の場合はSSHをインストール済みなのでメインPCでSSHでログインします。

ssh louis@192.168.3.16

PDS_ADMIN_PASSWORDを表示します。

source /pds/pds.env
echo $PDS_ADMIN_PASSWORD
a7b5970b6a5077bb41fc68a26d30adda

まだBlueskyのPDSで招待コードを発行していない人は、発行しておきます。
PDS_HOSTNAMEは自分のPDSのドメイン、PDS_ADMIN_PASSWORDは先程確認したパスワードを入力します。

PDS_HOSTNAME="xsky.world"
PDS_ADMIN_PASSWORD="a7b5970b6a5077bb41fc68a26d30adda"

curl --silent \
  --show-error \
  --request POST \
  --user "admin:${PDS_ADMIN_PASSWORD}" \
  --header "Content-Type: application/json" \
  --data '{"useCount": 1}' \
  https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createInviteCode

admin:(PDS_ADMIN_PASSWORD)というようにadmin:ごとBase64エンコード変換します。

Base64 エンコード・デコード:画像などのデータをBase64文字列に変換、逆変換 | ラッコツールズ🔧
https://rakko.tools/tools/24/

image.png

サイトからコピーしてVisual Studio Codeで以下のようにBasicの右に貼り付けます。

GET https://xsky.world/xrpc/com.atproto.admin.getInviteCodes HTTP/1.1
Authorization: Basic YWRtaW46YTdiNTk3MGI2YTUwNzdiYjQxZmM2OGEyNmQzMGFkZGE=

Send Requestします。

{
  "cursor": "0429736408783::xsky-world-fjlka-lsiwjz",
  "codes": [
    {
      "code": "xsky-world-fjlka-lsiwjz",
      "available": 1,
      "disabled": false,
      "forAccount": "admin",
      "createdBy": "admin",
      "createdAt": "2099-02-29T01:12:30.914Z",
      "uses": []
    }
  ]
}

ちゃんと表示されていることを確認します。

API一覧

com.atproto | AT Protocol
https://atproto.com/lexicons/com-atproto

API一覧はこれです。

com.atproto.admin
管理者(admin)の行動に関する定義。

com.atproto.admin.defs
com.atproto.admin.disableAccountInvites
com.atproto.admin.disableInviteCodes
com.atproto.admin.enableAccountInvites
com.atproto.admin.getInviteCodes
com.atproto.admin.getModerationAction
com.atproto.admin.getModerationActions
com.atproto.admin.getModerationReport
com.atproto.admin.getModerationReports
com.atproto.admin.getRecord
com.atproto.admin.getRepo
com.atproto.admin.resolveModerationReports
com.atproto.admin.reverseModerationAction
com.atproto.admin.searchRepos
com.atproto.admin.sendEmail
com.atproto.admin.takeModerationAction
com.atproto.admin.updateAccountEmail
com.atproto.admin.updateAccountHandle

com.atproto.identity
アカウントIDに関する定義。

com.atproto.identity.resolveHandle
com.atproto.identity.updateHandle

com.atproto.label
ラベルに関する定義。

com.atproto.label.defs
com.atproto.label.queryLabels
com.atproto.label.subscribeLabels

com.atproto.moderation
モデレーションに関する定義。

com.atproto.moderation.createReport
com.atproto.moderation.defs

com.atproto.repo
atprotoリポジトリに関する定義。

com.atproto.repo.applyWrites
com.atproto.repo.createRecord
com.atproto.repo.deleteRecord
com.atproto.repo.describeRepo
com.atproto.repo.getRecord
com.atproto.repo.listRecords
com.atproto.repo.putRecord
com.atproto.repo.strongRef
com.atproto.repo.uploadBlob

com.atproto.server
サーバーの動作に関する定義。

com.atproto.server.createAccount
com.atproto.server.createAppPassword
com.atproto.server.createInviteCode
com.atproto.server.createInviteCodes
com.atproto.server.createSession
com.atproto.server.defs
com.atproto.server.deleteAccount
com.atproto.server.deleteSession
com.atproto.server.describeServer
com.atproto.server.getAccountInviteCodes
com.atproto.server.getSession
com.atproto.server.listAppPasswords
com.atproto.server.refreshSession
com.atproto.server.requestAccountDelete
com.atproto.server.requestPasswordReset
com.atproto.server.resetPassword
com.atproto.server.revokeAppPassword

com.atproto.sync
サーバー間同期に関する定義。

com.atproto.sync.getBlob
com.atproto.sync.getBlocks
com.atproto.sync.getLatestCommit
com.atproto.sync.getRecord
com.atproto.sync.getRepo
com.atproto.sync.listBlobs
com.atproto.sync.listRepos
com.atproto.sync.notifyOfUpdate
com.atproto.sync.requestCrawl
com.atproto.sync.subscribeRepos

■参照サイト

AT Protocol (BlueSky Social)仕様解説 ~ W3C DID仕様を添えて ~ #SNS - Qiita
https://qiita.com/gpsnmeajp/items/eb665d639f088b85454e

REST API での HTTP 基本認証の使用 - IBM Documentation
https://www.ibm.com/docs/ja/ibm-mq/9.1?topic=security-using-http-basic-authentication-rest-api

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0