管理登录名

Windows 媒体播放器支持用户登录到类型 1 在线商店的各种方法。 Player 提供了标准登录对话框,但在线商店可以提供一个网页,作为标准对话框的替代方法。

用户可以通过与Windows 媒体播放器用户界面交互或与在线商店提供的发现页进行交互来启动登录尝试。 如果用户通过与发现页交互启动登录尝试,则发现页上的脚本将调用 External.attemptLogin 方法。

用户的登录状态由在线商店维护。 当用户的登录状态更改或登录尝试失败时,在线商店的插件通过调用 IWMPContentPartnerCallback::Notify,在类型参数中传递 wmpcnLoginStateChange 来通知Windows 媒体播放器。 玩家通过引发 External.OnLoginChange 事件将通知传递到发现页面。

OnLoginChange 的调用不一定意味着用户的登录状态已更改;这可能意味着尝试登录失败。 若要确定用户的登录状态, OnLoginChange 事件处理程序可以检查 External.userLoggedIn 属性。

以下部分介绍标准登录过程、备用登录过程和注销过程。

标准登录

标准登录过程涉及以下步骤:

  1. 用户通过与Windows 媒体播放器用户界面交互或与发现页面交互来启动登录尝试。
  2. Windows 媒体播放器显示一个对话框,提示用户输入用户名和密码。
  3. 当用户单击对话框中的“登录”按钮时,Windows 媒体播放器调用由在线商店插件实现的 IWMPContentPartner::Login
  4. 该插件与在线商店通信,成功或无法登录用户。
  5. 如果登录尝试成功,插件会通过调用 IWMPContentPartnerCallback::Notify 来通知Windows 媒体播放器,并在 pContext 参数的 boolVal 成员中传递VARIANT_TRUE。 如果登录尝试失败,插件会通过调用 IWMPContentPartnerCallback::Notify 来通知Windows 媒体播放器,并在 pContext 参数的 ulVal 成员中传递 32 位值。 然后,Player 将该 32 位值传递给 IWMPContentPartner::GetItemInfo ,以获取可处理失败的网页的 URL。

备用登录名

如果在在线商店插件的功能注册表项中设置了SUBSCRIPTION_CAP_ALTLOGIN标志,Windows 媒体播放器不使用标准登录对话框。 相反,Windows 媒体播放器调用 IWMPContentPartner::GetItemInfo 来检索执行登录过程的网页的 URL。 有关功能注册表项的详细信息,请参阅类型 1 Online Microsoft Store的注册表项和条目

玩家调用 GetItemInfo 两次:一次传递g_szItemInfo_ALTLoginURL以检索登录网页的 URL,一旦传递g_szItemInfo_ALTLoginCaption来检索承载网页的窗口的标题。 GetItemInfo 返回登录网页的 URL 时,可以通过将以下参数字符串追加到 URL 来指定登录窗口的大小:

?DlgX=widthDlgY&=height

在参数字符串中, 宽度高度 是窗口的宽度和高度(以像素为单位)。 例如 GetItemInfo 可以返回以下字符串,以指定应在宽度为 800 像素且高度为 400 像素的窗口中显示AltLogin.htm

https://proseware.com/AltLogin.htm?DlgX=800&DlgY=400

替代登录过程涉及以下步骤:

  1. 用户通过与Windows 媒体播放器用户界面交互或与发现页面交互来启动登录尝试。
  2. Windows 媒体播放器打开一个模式窗口,该窗口显示在线商店提供的登录网页。
  3. 网页与在线商店通信,成功或无法登录用户。
  4. 如果登录尝试成功,则网页通过调用 External.sendMessage 通知在线商店的插件,这会导致调用 IWMPContentPartner::SendMessage。 在线商店的插件通过检查传递给 IWMPContentPartner::SendMessage 的参数来确定登录尝试成功。 这些参数不是由 Windows 媒体播放器 解释的;它们仅对在线商店有意义。 该插件调用 IWMPContentPartnerCallback::Notify,在 pContext 参数的 boolVal 成员中传递VARIANT_TRUE。 如果登录失败,在线商店必须确定如何帮助用户。 一种可能性是在托管备用登录网页的模式窗口中显示一个新网页。

注销

注销过程涉及以下步骤。

  1. 用户通过与Windows 媒体播放器用户界面交互或与发现页面交互来启动注销尝试。
  2. Windows 媒体播放器调用由在线商店插件实现的 IWMPContentPartner::Logout
  3. 该插件与在线商店通信,成功或无法注销用户。
  4. 如果注销尝试成功,插件会通过调用 IWMPContentPartnerCallback::Notify 来通知Windows 媒体播放器,并在 pContext 参数的 boolVal 成员中传递VARIANT_FALSE。

尝试登录或注销成功时,在线商店的插件调用 IWMPContentPartnerCallback::Notify,在 类型 参数中传递 wmpcnLoginStateChange。 插件使用 pContext 参数指定用户的当前登录状态。 如果插件将 pContext-boolVal> 设置为VARIANT_TRUE,则用户将登录。 如果插件将 pContext-boolVal> 设置为VARIANT_FALSE,则会注销用户。请注意,pContext 不指示尝试的成功或失败;而是指示用户的当前登录状态。

External.attemptLogin

External.OnLoginChange 事件

External.userLoggedIn

IWMPContentPartner::Login

IWMPContentPartner::Logout

类型 1 在线商店编程指南