4

我正在尝试编写一个 PHP 脚本,它允许我做两件事:

  1. 允许用户使用他们的 Hotmail(我认为它现在称为“Live”?)帐户向网站验证自己的身份

  2. 从 Hotmail 检索经过身份验证的用户联系人列表。

在过去的 6 个小时里,我一直在互联网上搜索,寻找至少一个我可以修改/扩展以完成上述两件事的工作示例。例如,这里有几十个类似的问题在这里提出 -提供的答案都不再有效(诚然,其中一些问题已经存在几年了)。

我尝试了 Microsoft 站点并下载了他们的 API 的最新版本,该 API 似乎以相当惊人的速度发展。我终于设法找到了一个尚未弃用的 API(还没有?)

我按照说明进行操作,当我尝试进行身份验证时,由于我的努力,我得到了以下信息:

We're unable to complete your request
Windows Live ID is experiencing technical difficulties. Please try again later.

我立即尝试了演示的在线版本,也许不出所料,它就像一个魅力。

顺便说一句,我设法为 Yahoo 和 GMail 实现了相同的功能,使用它们的 OPEN API,每个不到一个小时。现在,我对所有专有事物的彻底仇恨(对不起,微软)有可能导致我在这里失去了一点情节。

有没有人实际上(在 2012 年)设法在 PHP 中获得了一个工作示例,它允许:

  1. Hotmail(实时?)用户身份验证
  2. Hotmail 用户联系人邮箱检索

如果你有,一个代码片段,或者我可以找到这样一个片段的链接将非常有用,因为到目前为止,我浪费了整个下午试图通过 PHP 使用 Microsoft Live API。

PS:不,我对 OpenInviter 不感兴趣,它坏了。

4

3 回答 3

1

我围绕每个服务提供商的单个数组编写了自己的 oauth 库。此数组包含执行身份验证和检索用户数据所需的所有数据。我用于 msdn(即 hotmail、outlook、xbox、msn)的数组是:

$msdn = array
(
  'oauth_version'              => '2',
  'oauth_method'               => 'GET',
  'redirect_user_params'       => array
  (
    'url'                      => 'https://oauth.live.com/authorize',
    'response_type'            => 'code',
    'http_params'              => array
   (
     'url',
     'client_id',
     'redirect_uri',
     'response_type',
     'scope',
     'state'
   )
 ),
 'obtain_access_token_params'  => array
 (
   'url'                       => 'https://oauth.live.com/token',
   'grant_type'                => 'authorization_code',
   'http_params'               => array
   (
     'url',
     'client_id',
     'client_secret',
     'code',
     'grant_type',
     'redirect_uri',
     'scope'
    )
  ),
  'scope'                      => 'wl.signin wl.basic',
  'obtain_user_data_params'    => array
  (
    'url'                      => 'https://apis.live.net/v5.0/me',
    'http_params'              => array
    (
      'url',
      'access_token',
      'scope'
    )
  ),
  'client_id'                  => 'xxxxx', // = oauth_consumer_key in oauth 1.0 lingo
  'client_secret'              => 'xxxxxxxxxxxxxxx',
  'readme_url'                 => 'http://msdn.microsoft.com/en-us/library/live/hh243647.aspx'
);

三个 oauth 阶段(即“重定向用户”、“获取访问令牌”和“获取用户数据”)中的每一个的参数都在http_params数组中。在 msdn 的情况下,这些参数最终出现在我使用 curl 发出的 url 的查询查询字符串中(因为 msdn 只接受 GET,不接受 POST)。

我没有尝试检索用户的联系人通讯录,但这只是使用scope您需要的任何额外信息扩展元素的情况(记录在此处http://msdn.microsoft.com/en-us/library/live/ hh243646.aspx)。http_params从数组中可以看出,该scope参数用于三个 oauth 阶段的每一个阶段。

于 2012-11-18T01:24:40.123 回答
0

在CloudSponge 测试驱动器上尝试 Hotmail/MSN/Live 导入,看看这是否是您希望的用户体验。

如果它适合您,您可以使用我们的小部件或我们的 API。如果您想使用 API,我们已经为您编写了一个PHP 包装器以方便您使用。

于 2012-11-13T21:25:43.023 回答
0

如果您只输入 www.domain.com,请确认您的回调 url 是 http://,然后得到这个问题..

于 2013-05-04T06:33:32.497 回答