アプリを登録する
Hivesigner で利用者をログインさせるアプリは、一つの Hive アカウントです。その名前が、あなたが送る client_id になります。プロフィールには Hivesigner が読む設定が入っています。トークンの送り先にできるコールバックと、コードフローのためのクライアントシークレットです。API でブロードキャストする場合は、アプリアカウントが @hivesigner に投稿権限も与えます。このページでは各手順をたどります。
必要なもの
| したいこと | アプリアカウントとコールバック | クライアントシークレット | @hivesigner への許可 |
|---|---|---|---|
| ログインさせてトークンフローでブロードキャストする | はい | いいえ | はい |
| ログインさせてコードフローでブロードキャストする(更新トークン) | はい | はい | はい |
| ログインだけ、アプリ名の入ったトークンで | はい | いいえ | いいえ |
| ログインだけ、Hive アカウントのないサイトから | いいえ | いいえ | いいえ |
| 署名リンクを送る | いいえ | いいえ | いいえ |
最後の二行については、投稿アクセスなしのログインと署名リンクを参照してください。
アプリアカウントを作る
- アプリ用の Hive アカウントを作ります。たとえば https://ecency.com/signup で作れます。個人用ではなくアプリ専用のアカウントを使ってください。その名前があなたの
client_idです。利用者は同意画面の「Hive アカウント」の横でそれを目にします。Hive アカウントの名前は変更できないので、慎重に選んでください。 - https://hivesigner.com/import でそのアカウントを Hivesigner に追加します(アカウントを追加)。アクティブキーかマスターパスワードを使ってください。下にある許可の手順にはアクティブキーが必要です。
アプリの設定を入力する
アプリアカウントを選んだ状態で https://hivesigner.com/profile を開き、次を設定します。
- このアカウントはアプリです。 これを有効にします。アカウントをアプリとして示すもので、API はそのアカウント向けのコードや更新トークンを受け付ける前にこれを確認します。
- リダイレクト URI。 あなたのコールバックを一行に一つずつ書きます。コールバックを参照してください。
- 作成者。 アプリを管理している人です。https://hivesigner.com/apps のアプリ一覧に表示されます。
- ステータス。 本番か試験かを、あなた自身の記録のために示します。Hivesigner はどちらも同じに扱います。
- クライアントシークレット。 コードフローにだけ必要です。クライアントシークレットを参照してください。
名前 と プロフィール画像の URL も入力してください。同意画面にはアプリの画像と名前が出ます。https://hivesigner.com/apps のアプリ一覧には名前、自己紹介、ウェブサイト が出ます。
保存するとアカウントのプロフィールがオンチェーンで更新され、そのアカウントの投稿キーが必要になります。Hivesigner はログインのリクエストが開かれたときにアカウントからコールバックを読むので、変更はトランザクションがブロックに入り次第すぐ反映されます。
注: 名前、画像、説明はあなたのアプリアカウント自身が公開しているものです。そのため同意画面には、実際のアカウント名(
@myapp)と利用者の送り先ホストも表示されます。許可とリダイレクトが実際に使うのはそちらです。
コールバック
コールバック(ログインのリクエストにおける redirect_uri)とは、Hivesigner が利用者をトークンやコードとともに戻す先です。Hivesigner は、あなたのアプリアカウントに登録されたコールバックにしか送りません。
規則
- 完全一致。 リクエストの
redirect_uriは、あなたのリダイレクト URI のいずれかと一字一句一致しなければなりません。スキーム、ホスト、ポート、パス、クエリのすべてです。 - https のみ。 コールバックは
https://を使う必要があります。素のhttp://はループバックでのみ受け付けます。localhost、127.0.0.1、[::1]です。 - ループバックのポートは変わってもかまいません。 素の http で登録したループバックのコールバックは、パス、クエリ、フラグメント、ユーザー情報が同じであれば、どのループバックホストとポートにも一致します。
https://で登録したループバックのコールバックは完全一致のままです。 - 独自スキームは不可。
myapp://callbackのようなコールバックは拒否されます。モバイルとデスクトップのアプリを参照してください。 - フラグメントは不可。 コールバックに
#fragmentを付けないでください。
プロフィールのページは、決して機能しないコールバックの保存を拒み、「使用できないコールバックです(https、または localhost での http のみ可)」と表示します。
例
次のリダイレクト URI が登録されている場合:
https://myapp.example/auth/callback
http://localhost:3000/auth
リクエストの redirect_uri |
結果 |
|---|---|
https://myapp.example/auth/callback |
受理: 完全一致 |
https://myapp.example/auth/callback/ |
拒否: / が余分 |
https://myapp.example/auth/callback?next=home |
拒否: クエリが違う |
https://www.myapp.example/auth/callback |
拒否: ホストが違う |
http://myapp.example/auth/callback |
拒否: ループバック以外での素の http |
http://localhost:3000/auth |
受理: 完全一致 |
http://127.0.0.1:51234/auth |
受理: ループバック、同じパス、別のポート |
http://[::1]:3000/auth |
受理: ループバック、同じパス |
http://127.0.0.1:3000/other |
拒否: パスが違う |
https://localhost:3000/auth |
拒否: https は素の http の登録と一致しない |
myapp://auth |
拒否: 独自スキーム |
コールバックでクエリを受け取りたい場合は、そのクエリをそのまま含めて登録してください。Hivesigner はコールバック自身のクエリを保ったまま、そのあとに自分のパラメーターを足します。
モバイルとデスクトップのアプリ
Hivesigner はトークンをコールバック URL に入れます。myapp:// のような独自スキームは特定のアプリに結び付いていません。同じ端末の別のアプリがそれを名乗り、トークンを受け取れてしまいます。そのため Hivesigner は独自スキームを拒否し、トークンは https のアドレスか利用者自身の端末のループバックにしか送りません。
ネイティブアプリは代わりに次のいずれかを使います。
- 自分が所有する https のリンク。 オペレーティングシステムがあなたのアプリで開くコールバックを自分のドメインに登録します(Android の App Links や iOS の Universal Links)。
- ループバックのコールバック。 アプリが
127.0.0.1でリダイレクトを待ち受けます。http://127.0.0.1/auth(またはlocalhost)を登録し、実行時には空いているポートを使ってかまいません。ポートは一致していなくても大丈夫です。
クライアントシークレット
クライアントシークレットは、コードの交換があなたのサーバーから来たことを示します。コードフローでは必須で、サーバーはコードや更新トークンのたびにこれを /api/oauth2/token へ送ります。トークンフローでは使いません。
- 長いランダムな値を作ります。 たとえば
openssl rand -hex 32です。 - プロフィールのページで設定します。 Hivesigner はその sha256 ハッシュだけを、あなたのアプリアカウントのプロフィールに保存します。欄を空のままにすると現在のシークレットが保たれます。
- サーバーに保管します。 ウェブページ、モバイルアプリ、URL には決して入れないでください。
- 変更するときは、新しいものを設定し、同時にサーバーも更新します。
@hivesigner に投稿権限を与える
API は @hivesigner アカウントの投稿キーでブロードキャストします。Hive があなたの利用者のためにその署名を受け入れるのは、あなたのアプリアカウントが自分の投稿権限に @hivesigner を追加している場合だけです。投稿権限の連なりを参照してください。
- Hivesigner であなたのアプリアカウントを選びます。
- https://hivesigner.com/authorize/hivesigner を開きます。
- ページには「@hivesigner を承認」と「@hivesigner は @myapp として投稿、コメント、投票、フォローができるようになります。」と表示されます。承認を選びます。これにはアプリアカウントのアクティブキーが必要です。
これは一度だけ行います。これがないと、ブロードキャストはすべて unauthorized_client と「Broadcaster account doesn't have permission to broadcast for @myapp」で失敗します。ログインだけのアプリには不要です。
この許可により @hivesigner はあなたのアプリアカウント自身としても投稿できるようになります。アプリアカウントをアプリ専用にしておくべき理由がもう一つ増えるわけです。
この許可を持って Hivesigner 経由でブロードキャストするアプリは、https://hivesigner.com/apps のアプリ一覧に、利用者の多い順で載ることがあります。
何かがうまくいかないとき利用者に見えるもの
Hivesigner は、安全に応えられないリクエストを拒否します。メッセージとこの問題を報告ボタンを表示します。そのリクエストは承認できません。あなたのコールバックには何も送られません。
| 問題 | 利用者に見える文言 |
|---|---|
redirect_uri があなたのリダイレクト URI のどれでもない |
「このアプリのリダイレクト URL は登録されていません。安全のため、サインインはブロックされました。」 |
client_id が Hive アカウントでない |
「@myapp は Hive アカウントではないため、承認できるアプリがありません。サイトに戻ってもう一度お試しください。」 |
| アカウントがアプリとして示されていない | 「@myapp はアプリとして設定されていないため、サインインできません。サイトに戻ってもう一度お試しください。」上で説明したとおりこのアカウントはアプリですを有効にしてください。 |
リクエストに redirect_uri がない |
「この承認リクエストは不完全です(アプリ名またはリダイレクト URL が指定されていません)。アプリに戻ってもう一度お試しください。」 |
利用者からこうした報告があったら、あなたのアプリが送っている redirect_uri を、登録済みのリダイレクト URI と一字ずつ見比べてください。
確認事項
- アプリ用の Hive アカウントを、そのアクティブキーで Hivesigner に追加していること。
- https://hivesigner.com/profile で「このアカウントはアプリです」が有効で、リダイレクト URI が登録され、コードフローを使うならクライアントシークレットが設定されていること。
- API でブロードキャストするなら、https://hivesigner.com/authorize/hivesigner で @hivesigner を承認していること。
- 登録済みのリダイレクト URI をそのまま送るログインリンクがあること。OAuth2 でのログインを参照してください。