Skip to content

Ham Connect

Ham Connectは、Hamオープンプラットフォームが提供するOAuth 2.0認可サービスで、サードパーティアプリケーションがHamユーザーの認可情報を安全に取得できるようにします。

概要

Ham Connectは標準の OAuth 2.0 Authorization Code Grant(RFC 6749 §4.1)に基づいて実装されています。サードパーティアプリケーションはHam Connectを通じて「Hamでログイン」機能を実装し、ユーザーの認可後に基本情報を取得できます。

対応スコープ

スコープ説明返却フィールド
profileユーザーのニックネームとアバターにアクセスnicknameavatar_url
is_studentユーザーが学生かどうかにアクセスis_student(bool)

open_id(現在のアプリケーションにおけるユーザーの一意識別子)は常に返却され、追加のスコープは不要です。

OAuth2 インタラクションフロー

フロー説明

  1. 認可の開始:サードパーティアプリがUniversal Link経由でHamを起動し、client_idscopestateredirect_uriパラメータを送信
  2. ユーザー認可:ユーザーがHamで認可情報を確認し、同意
  3. 認可コードの取得:Hamがサードパーティアプリのredirect_uriにリダイレクトし、ワンタイムcodeを付与
  4. トークン交換:サードパーティのサーバーcode + client_id + client_secretaccess_tokenを取得
  5. ユーザー情報の取得:サードパーティのサーバーaccess_token + クライアント認証情報でユーザー情報をリクエスト

主要エンドポイント

エンドポイント説明
https://ham.nowcent.cn/sso-authorize認可エントリ(Universal Link)、モバイル、デスクトップ(QRコードスキャン等)、Passkey認証に対応
https://open-api.ham.nowcent.cn/oauth/tokenトークン交換
https://open-api.ham.nowcent.cn/oauth/userinfoユーザー情報の取得

トークンの有効期間

トークン有効期間備考
Authorization Code5分ワンタイム使用、交換後に無効化
Access Token2時間期限切れ後は再認可が必要
Refresh Token提供なし

client_id と client_secret の取得

client_idclient_secretは、Ham Connectに接続するために必要な認証情報です:

  • client_id:アプリケーションの公開識別子、フロントエンドで使用可能
  • client_secret:アプリケーションの機密認証情報、サーバーサイドでのみ使用してください。フロントエンドコード、モバイルアプリバンドル、公開リポジトリには絶対に含めないでください

申請方法

現在、client_idclient_secretは開発者に連絡して申請する必要があります。

GitHub Discussionsからお問い合わせいただき、以下の情報をご提供ください:

  1. アプリケーション名と概要
  2. コールバックURL(redirect_uri)ホワイトリスト
  3. 必要なスコープ

セキュリティに関する注意事項

  • すべてのAPI呼び出しはHTTPSを使用すること
  • client_secretaccess_tokenサーバーサイドでのみ保存・使用すること
  • CSRF攻撃を防ぐため、stateパラメータを常に使用・検証すること
  • 最小権限の原則に従い、業務に必要なスコープのみを申請すること
  • ユーザーの一意識別子としてopen_idを使用し、nicknameに依存しないこと

完全なドキュメント

完全なAPI仕様、エラーコード、セキュリティベストプラクティスについては、接続ガイドをご参照ください。