Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Web API控制器获取Live SDK访问令牌_Javascript_Asp.net Mvc_Asp.net Web Api_Oauth_Live Sdk - Fatal编程技术网

Javascript 从Web API控制器获取Live SDK访问令牌

Javascript 从Web API控制器获取Live SDK访问令牌,javascript,asp.net-mvc,asp.net-web-api,oauth,live-sdk,Javascript,Asp.net Mvc,Asp.net Web Api,Oauth,Live Sdk,我在后端有以下方法,我想获取通过live sdk登录的用户的访问id: public class AccountController : ApiController { [HttpGet] [Route("Account/Authenticate/LiveUser")] public void AuthenticateLiveUser() { //TODO: Inspect the request query to get the access t

我在后端有以下方法,我想获取通过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
    }   
 }
在前端,我有以下代码:

回过头来看,我正在调试我的
AuthenticateLiveUser
服务处理程序,但是没有允许我访问live服务的访问令牌或用户id


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

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

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

请在上阅读更多信息,并在此处查看SDK示例:


Fwiw,服务器在重定向中看不到访问令牌的原因是它出现在URL中的“#”之后。出于安全原因,这是故意的。虽然所有这些听起来都很复杂,但实际上它是OAuth 2.0的教科书实现。因此,如果您在阅读该规范时发现了价值的话。

Robert,我遵循了这里的示例,几乎不折不扣地说:如果我理解正确,LiveSDK应该为我处理很多腿部工作。我复制的示例不适用于脱机访问,还有重定向uri与移动uri不同的问题。所以响应类型必须是代码,而不是令牌。
    <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"
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