hotmail:使用PHP进行用户身份验证和联系人检索

时间:2012-11-06 20:36:37

标签: php oauth hotmail

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

  1. 允许用户使用他们的Hotmail(我认为它现在称为'Live')帐户来验证自己的网站

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

  3. 我在过去6个小时内浏览过互联网,至少寻找一个可以修改/扩展以完成上述两件事的工作示例。例如,有几十个类似的问题在这里提出 - NONE 提供的答案不再适用(诚然,有些问题是几年之久)。

    我尝试了微软网站,并下载了最新版本的API,这似乎以相当惊人的速度发展。我终于设法追踪API which has not been deprecated (yet?)

    我按照说明操作,当我尝试进行身份验证时,为了我的努力,我获得了以下消息奖励:

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

    我立即尝试了online version of the demo,也许不出所料,这就像一个魅力。

    顺便说一句,我设法使用他们的OPEN API为雅虎和GMail实现相同的功能,每个小时一小时。现在,有可能我对所有事物的专有仇恨(抱歉让微软这么做),让我在这里失去了一点情节。

    有没有人(2012年)设法获得PHP的工作样本,允许:

    1. Hotmail(live?)用户身份验证
    2. Hotmail用户联系电子邮件检索
    3. 如果你有,代码片段,或者我可以找到这样一个代码片段的链接将是非常有用的,因为到目前为止,浪费了整整一个下午试图通过PHP工作Microsoft Live API。

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

3 个答案:

答案 0 :(得分: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阶段中的每个阶段。

答案 1 :(得分:0)

CloudSponge test drive上尝试Hotmail / MSN / Live导入,看看这是否是您希望的用户体验。

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

答案 2 :(得分:0)

请确认您的回拨网址是http://如果您只是将www.domain.com放入,那么就会遇到此问题..