> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 來自遊戲實體的遊戲伺服器

> 使用 PFAuthenticationGetEntityWithSecretKeyAsync 在 PlayFab Services SDK 中以遊戲實體身分進行驗證，以在 Win32 上呼叫僅限伺服器的 API。

# 使用遊戲實體存取 PlayFab

就像您可以以玩家身分登入並進行 PlayFab 呼叫一樣，您也可以以遊戲實體身分進行驗證，並透過它進行 PlayFab 呼叫。遊戲實體可以使用某些玩家實體無法使用的函式。其中許多函式都以「server」一詞作為前置詞，例如 ServerAddPlayerTag。

取得遊戲實體控制代碼的初始化步驟與以玩家身分登入相同。如需詳細資訊，請參閱 [Win32 快速入門](/zh-TW/services/playfab/sdks/c/quickstart-win32)文章的「初始化」一節。

注意：目前伺服器函式僅適用於 Win32 版本的 SDK。

## 驗證遊戲實體

在初始步驟中建立 **PFServiceConfigHandle** 之後，您可以呼叫 [**PFAuthenticationGetEntityWithSecretKeyAsync**](/zh-TW/services/playfab/api-references/c/pfauthentication/functions/pfauthenticationgetentitywithsecretkeyasync) 來取得遊戲實體控制代碼。取得實體呼叫順利完成後，會傳回 **S\_OK** 以及 **PFEntityHandle**。此程序與以玩家身分登入類似。傳回的 **PFEntityHandle** 類型相同，只不過在此情況下，實體控制代碼代表的是遊戲實體而非玩家實體。我們可以將此實體稱為遊戲伺服器。

```cpp theme={null}
    PFAuthenticationGetEntityRequest request{};
    XAsyncBlock async{};

    // Add your own error handling when FAILED(hr) == true
    HRESULT hr = PFAuthenticationGetEntityWithSecretKeyAsync(
        serviceConfigHandle,
        secretKey, // title specific secret key
        &request,
        &async
    );

    hr = XAsyncGetStatus(&async, true); // This is doing a blocking wait for completion, but you can use the XAsyncBlock to set a callback instead for async style usage

    PFEntityHandle entityHandle;
    hr = PFAuthenticationGetEntityWithSecretKeyGetResult(
        &async,
        &entityHandle
    );
```

## 服務呼叫

建立遊戲伺服器之後，您就可以對 PlayFab 後端進行呼叫。以下範例示範如何將玩家標記新增至遊戲中的特定玩家。

```cpp theme={null}
    XAsyncBlock async{};
    PFSegmentsAddPlayerTagRequest request{};
    addSegmentRequest.PlayFabId = "ABCDEF123456";
    addSegmentRequest.tagName = "tagName";
    HRESULT hr = PFSegmentsServerAddPlayerTagAsync(entityHandle, &request, &async);
    hr = XAsyncGetStatus(&async, true);
```

如同 AddPlayerTag 範例，遊戲伺服器使用的許多函式都涉及取得或變更玩家資料。此函式需要特定玩家的 PlayFab ID。已連線的用戶端可以提供 PlayFab ID，或者伺服器可以透過 GetPlayFabIDsFromXboxLiveIDs 等呼叫直接從 PlayFab 擷取。

## 參考

[API 參考文件](/zh-TW/services/playfab/api-references/c/pfauthentication/pfauthentication_members)


## Related topics

- [直接連線以對遊戲伺服器進行偵錯](/zh-TW/services/playfab/multiplayer/servers/directly-debugging-game-servers.md)
- [Wrapper 範例](/zh-TW/services/playfab/multiplayer/servers/wrapper-sample.md)
- [遊戲伺服器設定概觀](/zh-TW/services/playfab/live-service-management/game-configuration/index.md)
- [伺服器](/zh-TW/services/playfab/multiplayer/servers/index.md)
- [遊戲伺服器和大廳](/zh-TW/services/playfab/multiplayer/lobby/lobby-server-overview.md)
