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

hotmail:使用PHP进行用户身份验证和联系人检索,php,oauth,hotmail,Php,Oauth,Hotmail,我正在尝试编写一个PHP脚本,它将允许我做两件事: 允许用户使用他们的Hotmail(我想它现在被称为“Live”?)帐户对网站进行身份验证 从Hotmail检索经过身份验证的用户联系人列表 在过去的6个小时里,我在互联网上搜索,寻找至少一个可以修改/扩展的工作示例来完成上述两件事。这里有几十个类似的问题,例如-所提供的答案中没有一个是有效的(诚然,有些问题是几年前提出的) 我尝试了微软的网站,下载了他们API的最新版本,它的发展速度似乎相当惊人。我终于找到了一个新的目标 我按照说明进行了操作,

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

  • 允许用户使用他们的Hotmail(我想它现在被称为“Live”?)帐户对网站进行身份验证

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

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

    我尝试了微软的网站,下载了他们API的最新版本,它的发展速度似乎相当惊人。我终于找到了一个新的目标

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

    我立即尝试了这个方法,也许毫不奇怪,这个方法很有效

    顺便说一句,我设法使用雅虎和GMail的开放API为它们实现了相同的功能,每个不到一个小时。现在,有可能是我对所有私有事物的极度仇恨(对不起,让微软这么做),导致我在这里失去了一些情节

    是否有人(2012年)成功地获得了一个PHP工作示例,该示例允许:

  • Hotmail(实时?)用户身份验证
  • Hotmail用户联系电子邮件检索
  • 如果有的话,一段代码片段或一个指向我可以找到这样一段代码片段的链接将非常有用,因为到目前为止,我已经浪费了整整一个下午试图通过PHP使用Microsoft Live API


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

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


    如果它适合您,您可以使用我们的小部件或API。如果您想使用API,我们已经编写了一个用于方便您的应用程序。

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

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


    我还没有尝试检索用户的联系人通讯簿,但这只是一个扩展
    范围
    元素的例子,其中包含您需要的任何额外信息(这里有文档记录)。从
    http_params
    数组中可以看到,
    scope
    参数用于oauth的三个阶段。

    请确认您的回调url为http://如果您只放www.domain.com,则会出现此问题。

    听起来您应该查看@Dagon:Pray tell,您认为openid将如何帮助我使用Hotmail帐户对用户进行身份验证?@Dagon:openid用于身份验证-因此它只提供真实性,我无法确认Hotmail(与outlook.com相同)oauth是否正常工作。我目前正在为hotmail身份验证(用户注册和后续登录)开发我的网站,并在过去一周内进行了大量测试。我没有看到您的特定错误消息,因此可能是由于端点不正确或签名不正确造成的?@Mullhausen:也许您可以发布一段简单的代码片段,以便我可以对其进行测试—到目前为止,似乎没有任何效果?
    We're unable to complete your request
    Windows Live ID is experiencing technical difficulties. Please try again later.
    
    $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'
    );