我在後端下面的方法,我想獲得用戶的訪問ID誰通過直播SDK登錄:從網絡API控制器獲得現場SDK訪問令牌
public class AccountController : ApiController
{
[HttpGet]
[Route("Account/Authenticate/LiveUser")]
public void AuthenticateLiveUser()
{
//TODO: Inspect the request query to get the access token
}
}
在前端我有以下代碼:
<script type="text/javascript">
WL.init({
client_id: '00000000XXXXXXXX',
redirect_uri: 'http://XXXXXXXXXXXXX.us/Account/Authenticate/LiveUser',
scope: 'wl.signin',
response_type: 'token'
});
WL.ui({
name: "signin",
element: "signin"
});
</script>
我能打開頁面上的活招牌,簽署和現場服務器,消息如下(從小提琴手看到的)迴應道:
HTTP/1.1 302 Found
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Content-Type: text/html; charset=utf-8
Expires: Sat, 18 Oct 2014 19:52:24 GMT
Location: http://XXXXXXXXXXXXX.us/Account/Authenticate/LiveUser#access_token=<<ACCESS_TOKEN>>&token_type=bearer&expires_in=3600&scope=wl.signin%20wl.basic%20wl.emails&state=redirect_type%3dauth%26display%3dpage%26request_ts%3d1413662001911%26response_method%3durl%26secure_cookie%3dfalse&user_id=<<USER_ID>>
Server: Microsoft-IIS/7.5
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
注意:上面的重定向轉發用戶到正確的地址,它包括訪問令牌和用戶ID,在上面的代碼中審查。
不過是去到我的服務器的請求如下,請注意沒有訪問令牌和用戶ID
GET http://XXXXXXXXXXXXX.us/Account/Authenticate/LiveUser HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US,en;q=0.8,ja;q=0.6,zh-Hant-HK;q=0.4,zh-Hant;q=0.2
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Accept-Encoding: gzip, deflate
Host: nsyncservices.us
DNT: 1
Connection: Keep-Alive
讓我們回到了一圈,我調試我AuthenticateLiveUser
服務處理程序,但沒有訪問令牌或用戶ID,這將允許我訪問實時服務。
我在做什麼錯?我如何獲得訪問令牌和用戶ID到我的服務器端代碼?
Robert,我跟着在這裏找到的例子,幾乎到了這封信:http://developer.telerik.com/featured/live-connect-authentication-web/如果我正確地理解了這一點,那麼現場SDK應該是照顧很多腿的工作對我來說。 – Alwyn 2014-10-19 02:11:33
我正在複製的示例不適用於離線訪問,也存在重定向uri與移動uri不同的問題。所以response_type必須是代碼,而不是令牌。 – Alwyn 2014-10-19 07:01:16