我正在尝试编写一个允许我做两件事的PHP脚本:
允许用户使用他们的Hotmail(我认为它现在称为'Live')帐户来验证自己的网站
从Hotmail中检索经过身份验证的用户联系人列表。
我在过去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的工作样本,允许:
如果你有,代码片段,或者我可以找到这样一个代码片段的链接将是非常有用的,因为到目前为止,浪费了整整一个下午试图通过PHP工作Microsoft Live API。
PS:不,我对OpenInviter不感兴趣,它已经坏了。
答案 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放入,那么就会遇到此问题..