gpt4 book ai didi

javascript - 从 Web API Controller 获取 Live SDK 访问 token

转载 作者:行者123 更新时间:2023-12-03 11:37:09 25 4
gpt4 key购买 nike

我在后端有以下方法,我想获取通过live sdk登录的用户的访问id:

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>

我能够打开实时登录页面,进行登录,实时服务器响应以下消息(如从 fiddler 中看到的):

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"

注意:上面的重定向将用户转发到正确的地址,其中包括访问 token 和用户 ID,在上面的代码中进行了审查。

但是,发送到我的服务器的请求如下,请注意缺少访问 token 和用户 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 服务处理程序,但是没有访问 token 或用户 ID,这将允许我访问实时服务。

我做错了什么?如何获取服务器端代码的访问 token 和用户 ID?

最佳答案

答案取决于您打算如何处理服务器上的 token 。如果您只需要进行几次快速服务调用,通常只需编写一些将 token 发送到服务器的 JS 就足够了。

如果你想持有代币超过一个小时,一切都会改变。访问 token 本身将会过期,因此您真正需要的是一个身份验证代码,可用于获取长期刷新 token ,而该长期刷新 token 又可用于获取短期访问 token 。

有关此内容的更多信息,请访问 http://msdn.microsoft.com/en-us/library/hh243649.aspx并在此处查看 SDK 示例:https://github.com/liveservices/LiveSDK-for-Windows/tree/master/src/Web

Fwiw,您的服务器在重定向中看不到访问 token 的原因是它出现在 URL 中的“#”之后。这是出于安全原因而有意为之。虽然所有这些听起来很复杂,但它实际上是 OAuth 2.0 的教科书实现,因此如果您可能会发现阅读该规范的值(value)。

关于javascript - 从 Web API Controller 获取 Live SDK 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com