2012-11-06 78 views
4

我試圖寫一個PHP腳本,讓我做兩件事情:Hotmail的:用戶身份驗證和聯繫人檢索與PHP

  1. 允許用戶使用他們的Hotmail(我認爲其所謂的「活」現在?)帳戶驗證自己的網站

  2. 從Hotmail檢索經過身份驗證的用戶聯繫人列表。

我在過去的6個小時裏瀏覽了互聯網,至少在尋找一個我可以修改/擴展來完成以上兩件事的工作示例。這裏有幾十個類似的問題,例如 - NONE提供的答案工作更多(不可否認,有些問題是幾歲)。

我嘗試了微軟網站,並下載了他們的API的最新版本,這似乎是以相當驚人的速度發展。我終於設法追查了一個API which has not been deprecated (yet?)

我遵循的指示,當我試圖進行身份驗證,我是用下面的mesage獎勵,爲自己的努力:

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

我立刻嘗試了online version of the demo也許並不讓人意外的工作就像魅力。另外,我設法爲雅虎和GMail實現了相同的功能,使用他們的OPEN API,每個小時不到一個小時。現在,我可能會對所有東西產生厭惡的仇恨(抱歉讓微軟),這讓我在這裏失去了一點情節。

有沒有人真的(2012年)設法在PHP工作示例,它允許:

  1. 的Hotmail(生活?)用戶認證
  2. Hotmail的用戶聯繫人的電子郵件檢索

如果你有,代碼片段或鏈接到我可以找到這樣一個片段將是非常有用的,因爲我到目前爲止,浪費了整個下午試圖通過PHP工作的Microsoft Live API。

PS:不,我對OpenInviter不感興趣,破壞了它。

+0

聽起來好像你應該看看[開放ID(HTTP://的OpenID .net /) – 2012-11-06 21:06:19

+2

@Dagon:請問,你認爲open id如何幫助我用Hotmail帳戶驗證用戶身份? –

+1

@Dagon:openid是用於身份驗證的 - 所以它只提供真實性,沒有更多 – zerkms

回答

0

嘗試使用CloudSponge test drive上的Hotmail/MSN/Live導入來查看這是否是您希望的用戶體驗。

如果它適合你,你可以使用我們的小部件或我們的API。如果你想使用API​​,我們有一個PHP wrapper已經寫出來爲您提供方便。

1

我爲每個服務提供者編寫了基於單個數組的自己的oauth庫。此數組包含執行身份驗證和檢索用戶數據所需的所有數據。我用於msdn的數組(即。的Hotmail,前景,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陣列中看到的那樣,在三個oauth階段的每一個階段都使用參數scope

0

請確認您的回調URL是以http://如果你只把www.domain.com然後得到這個問題..