

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# `login` 適用於 PHP 的 SDK 中的 提供者
<a name="login-provider"></a>

`Aws\Credentials\CredentialProvider::login` 會嘗試載入瀏覽器型登入工作階段所設定的登入資料，這些登入工作階段是由 CLI AWS 等工具所協助。身分驗證後， AWS 會產生跨 AWS SDKs和工具運作的臨時登入資料。

透過此程序，您可以使用在初始帳戶設定期間建立的根登入資料、IAM 使用者或身分提供者的聯合身分進行身分驗證，而適用於 PHP 的 AWS SDK 會自動為您管理臨時登入資料。這種方法消除了在本機存放長期登入資料的需求，進而增強安全性。

當您執行 `aws login`命令時，您可以從作用中主控台工作階段中選取 ，或透過瀏覽器型身分驗證流程登入，這會自動產生臨時登入資料。適用於 PHP 的 AWS SDK 會使用登入服務自動重新整理這些登入資料，最長可達 12 小時。

登入提供者會根據提供的設定檔，嘗試載入先前提及的登入工作階段工作流程所產生的存取權杖。如果呼叫提供者時未提供任何設定檔，它會先檢查`AWS_PROFILE`環境變數來嘗試解析設定檔，然後再返回設定檔 `default`。程式碼內組態可以傳遞給提供者，其中會尋找用於重新整理登入資料之登入服務用戶端`region`的值。如果組態陣列中未提供任何區域，提供者將嘗試透過檢查`AWS_REGION`環境變數來解析區域，然後在解析的設定檔中設定區域值。如果找不到區域，提供者將傳回拒絕承諾，其中包含如何設定區域的指示。

提供者稱為預設鏈結的一部分，可以直接呼叫。

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::login(<profile_name>, ['region' => <region>]);
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region' => 'us-west-2',
    'credentials' => $provider
]);
```

根據預設，如果您想要使用的服務用戶端上未提供登入資料組態，則會呼叫此提供者做為`defaultProvider()`登入資料鏈結的一部分。在此案例中，服務用戶端的區域會自動傳遞給`login()`供應商。此外，在此案例中，傳遞給登入供應商的設定檔值將先檢查`AWS_PROFILE`環境變數，再返回設定檔 來解析`default`。