Last updated on

Micropubと自前IndieAuth


Micropub対応してみようかなと思ったんだけど、前提としてIndieAuthでログイン出来るようにする必要があるんだけど
 rel=meで対応SNSと相互リンクしないといけない上に対応SNSが使えそうなのがGitHubぐらいしか無い
 rel=meは公開鍵を使う方法もあるがログインする時に署名する作業がめんどくさい

という訳でどうしようかなChatGPTに聞いてたらパスフレーズ認証だけにするなら自前IndieAuth作るの簡単だよっていうからやってみた

実験用の別サイト(Astro+Cloudflare Pages&Workers)で試してた

ところが、なんかうまくいかねーのでChatGPTにうまくいかねーつったらそれはこれが必要!とか色々後出しで言われてダルかった

IndieAuthを試すサイトgimme-a-tokenをChatGPTに教えてもらいこれが動作確認に役立った
https://gimme-a-token.5eb.nl

いちばん引っかかったポイントはCORSだった
 gimme-a-token試してて気付いた
 これはChatGPTはよく分かってなくて、なんか調べて解決した
CORSはastro.configで

security: {
  checkOrigin: false
}

を追加する事でうまくいった

const cors = {
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Methods": "POST, OPTIONS",
  "Access-Control-Allow-Headers": "Content-Type"
};

if (request.method === "OPTIONS") {
  return new Response(null, { headers: cors });
}

こういうのも追加したけど、これが意味なしてるかどうかは知らない、俺は適当にプログラミングしている…

今の所IndieAuthでログインがうまくいっただけでMicropubの投稿受け付けるのはまだ

Micropubで投稿出来るサイトとしてQuillをオススメされたのでそこから投稿出来るように目指してみる…
https://quill.p3k.io/
今はログインが出来た所…
 ログイン出来てメニュー確認するとなんか思ったより色々機能あるな?いや投稿フォーマットが色々あるだけか

Micropubは基本的にただのJSONで投稿種類によって(?)構造が色々あるみたいだけど特定の投稿に絞れば構造決め打ちでシンプルに出来るはずなので、適当に処理してD1に書き込んで、それとそれらD1にある投稿を表示するページを作ればいいと思う

うまく実験用のサイトで動作したらこっちに持ってきてここで俺の短文投稿が並ぶみたいなページでも用意してみようかな

いやていうか短文投稿一覧表示させたいだけならBlueSkyとか外部SNSに投稿してここでその外部SNSの投稿一覧を表示させるみたいな方が手っ取り早そうだけどな
 面白そうなのでMicropub対応やってみたいから…やる…