このトピックでは、サポートされているアカウントシステムを使用して Photo and Drive Service (PDS) にログインするためのベストプラクティスについて説明します。
1. UI を使用したログインの構成
PDS ユーザーインターフェース (UI) では、ログイン用に次の 5 つのアカウントシステムを構成できます。
携帯電話番号: PDS は、携帯電話番号を使用した登録やログインなどの機能をネイティブでサポートしています。詳細については、「携帯電話番号でのログイン構成」をご参照ください。
メールアドレス: PDS は、メールアドレスを使用した登録やログインなどの機能をネイティブでサポートしています。
DingTalk: DingTalk QR コードのスキャンまたは DingTalk パスワードを使用したログインをサポートしています。詳細については、「DingTalk ログイン構成」をご参照ください。
RAM ユーザー: Alibaba Cloud Resource Access Management (RAM) ユーザーの OAuth ログインをサポートしています。詳細については、「RAM OAuth ログイン構成」をご参照ください。
Active Directory (AD)/Lightweight Directory Access Protocol (LDAP): ログイン構成の詳細については、「AD/LDAP ログイン構成」をご参照ください。

2. 開発者統合
PDS は、カスタムアプリケーションもサポートしています。信頼できる秘密鍵を使用して資格情報を計算し、PDS Authorize - OAuth 認証のリクエスト 操作を呼び出して、資格情報を AccessToken と交換できます。これにより、任意のアカウントシステムを統合できるため、ユーザーはそのシステムのアカウントを使用して PDS にログインできます。
標準の JSON Web トークン (JWT) を生成して統合する方法の詳細については、「JWT アプリケーションアクセス」をご参照ください。
アカウント管理
このセクションでは、PDS でアカウントを管理するためのベストプラクティスについて説明します。
用語
1 人のユーザーが PDS にログインするために複数の方法を使用できます。各ログイン方法は、アカウントに対応しています。
PDS は、アカウントをユーザーにアタッチします。次の図は、ユーザーとそのアカウントの関係を示しています。

上記の図の User1 は、携帯電話番号、メールアドレス、または DingTalk アカウントを使用して PDS にログインできます。
アカウントをアタッチするには、次の手順を実行します。
ユーザーのプロパティ情報にログインアカウントを入力します。
ユーザーにアタッチされたアカウント情報を表す AccountLinkInfo を作成します。 user_id はユーザーの一意の識別子です。
次の例は、携帯電話番号とメールアドレスを使用してログインするユーザーを示しています。
ユーザー情報は次のとおりです。
{
"domain_id": "bj1",
"user_id": "testUserId",
"avatar": "",
"created_at": 1692345217531,
"updated_at": 1692345217531,
"email": "a**@aliyunpds.com",
"nick_name": "001",
"phone": "1390000****",
"role": "user",
"status": "enabled",
"user_name": "pds",
"description": "vipuser",
"default_drive_id": "1",
"user_data": {
"key": ""
},
"creator": "user1"
}ユーザーのプロパティ情報には、email フィールドと phone フィールドが含まれています。これらのフィールドは、メールアドレスと携帯電話番号を使用したログインに使用されるアカウントを表します。
アカウント情報のリストは次のとおりです。
{"items":
[
{
"authentication_type": "email",
"created_at": 1692345217628,
"display_name": "a**@aliyunpds.com",
"domain_id": "bj1",
"extra": "",
"identity": "a**@aliyunpds.com",
"user_id": "testUserId"
},
{
"authentication_type": "mobile",
"created_at": 1692345217822,
"display_name": "1390000****",
"domain_id": "testDomainId",
"extra": "",
"identity": "1390000****",
"user_id": "testUserId"
}
]
}このユーザーには、メールアドレスと携帯電話番号の 2 つのアカウントレコードがあります。
API 呼び出しと例
アカウント情報を取得する
GetLinkInfo - アカウント情報を取得する 操作を呼び出します。アカウントタイプ、一意のアカウント識別子、および識別子に関する追加情報を使用して、アカウントの完全な情報を取得します。
リクエストボディの例
{
'identity': '1390000****',
'type': 'mobile'
}レスポンスボディの例
{
"authentication_type": "mobile",
"created_at": 1692348425994,
"display_name": "1390000****",
"domain_id": "testDomainId",
"extra": "",
"identity": "1390000****",
"user_id": "testUserId"
}ユーザー ID でアカウントのリストを取得する
GetLinkInfoByUserId - ユーザー ID でアカウント情報を取得する 操作を呼び出します。ユーザー ID を使用して、ユーザーにアタッチされているすべてのアカウントのリストを取得します。
リクエストボディの例:
{
"user_id": "testUserId"
}レスポンスボディの例:
{"items":
[
{
"authentication_type": "email",
"created_at": 1692345217628,
"display_name": "a**@aliyunpds.com",
"domain_id": "testDomainId",
"extra": "",
"identity": "a**@aliyunpds.com",
"user_id": "testUserId"
},
{
"authentication_type": "mobile",
"created_at": 1692345217822,
"display_name": "1390000****",
"domain_id": "testDomainId",
"extra": "",
"identity": "1390000****",
"user_id": "testUserId"
}
]
}アカウントをアタッチする
LinkAccount - アカウントをアタッチする 操作を呼び出して、アカウントをユーザーにアタッチします。
リクエストボディの例:
{
"identity": "1390000****",
"type": "mobile",
"user_id": "testUserId"
}レスポンスボディの例:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpX****.eyJ1c2VySWQiOiJ0ZXN0X3VzZXJfT1VTNkRyNUF2OGQxNWVlZjk1NGMwNDdhNjgxYjA3MDhkMWFlZWUxZDMiLCJjdXN0b21Kc29uIjoie1wiY2xpZW50SWRcIjpcImNsaWVudF9pZF9mb3JfYWtcIixcImRvbWFpbklkXCI6XCJkYWlseTQ1MDE4XCIsXCJzY29wZVwiOltcIkRSSVZFLkdFVFwiLFwiRFJJVkUuTElTVFwiLFwiU0hBUkUuQUxMXCIsXCJGSUxFLkFMTFwiLFwiRFJJVkUuVVBEQVRFXCIsXCJVU0VSLlVQREFURV9JTkZPXCIsXCJVU0VSLkdFVFwiLFwiVVNFUi5MSVNUXCIsXCJTVE9SQUdFLkFMTFwiLFwiQkFUQ0hcIixcIkFDQ09VTlQuQUxMXCIsXCJPQVVUSC5BTExcIixcIklNQUdFLkFMTFwiLFwiSU5WSVRFLkFMTFwiLFwiVFJBREUuQUxMXCIsXCJERVZJQ0UuQUxMXCIsXCJHUk9VUC5HRVRcIixcIkdST1VQLkxJU1RcIixcIk1FTUJFUlNISVAuR0VUXCIsXCJNRU1CRVJTSElQLkxJU1RcIixcIlZJRVcuQUxMXCIsXCJTWU5DTUFQUElORy5BTExcIl0sXCJyb2xlXCI6XCJ1c2VyXCIsXCJyZWZcIjpcIlwiLFwiZGV2aWNlX2lkXCI6XCI1YjYzYWE0ZWRiZTg0ZTYyODE1YTM5MjMwNmM2YTc5NFwifSIsImV4cCI6MTY5MjM1MjQxNywiaWF0IjoxNjkyMzQ1MT****.NbTNBnY8l-flQmUoHrcxOy1ab7ZuOM3TGvaFz4F-gllJ1yWVP9JFutGlOkIUZJ05l7gIjOUroMrbrRQ6hPy9IG0j2RO60J_n18LQF1yUTtMfUMe97cbJF9MY3JSKjvuQ9KDPTwQK0bNfcsIr9LvjwcXueuzGH5MdP3jwaQGDC7Q",
"avatar": "",
"default_drive_id": "",
"domain_id": "testDomainId",
"expire_time": "2023-08-18T09:53:37Z",
"expires_in": 7200,
"is_first_login": false,
"nick_name": "",
"refresh_token": "5b63aa4edbe84e62815a392306c6a794",
"role": "user",
"status": "enabled",
"token_type": "Bearer",
"user_id": "testUserId",
"user_name": ""
}別のユーザーにすでにアタッチされているアカウントはアタッチできません。たとえば、携帯電話番号「1390000****」がユーザー A にアタッチされている場合、ユーザー B にアタッチすることはできません。
アカウントをデタッチする
UnLinkAccount - アカウントをデタッチする 操作を呼び出して、ユーザーからアカウントをデタッチします。
リクエストボディの例:
{
"identity": "1390000****",
"type": "mobile",
"user_id": "testUserId"
}レスポンスボディの例: この API 操作はパラメータを返しません。 HTTP ステータスコード 204 のみが返されます。
この操作を呼び出すと、アカウントレコードのみが削除されます。ユーザーのプロパティ情報は変更されません。つまり、ユーザーのプロパティ情報には「phone」: 「1390000****」が引き続き表示されます。
同時ログイン制限
PDS では、同じアカウントで同時にログインできるクライアントの数に制限はありません。ただし、同時に 5 つを超えるクライアントにログインしないことをお勧めします。