首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LightSpeed零售API中的刷新访问令牌

LightSpeed零售API中的刷新访问令牌
EN

Stack Overflow用户
提问于 2018-06-11 13:39:24
回答 1查看 313关注 0票数 1

访问令牌过期后,我无法刷新它。我不知道出了什么问题,我按照文档进行了跟踪。我正在使用WCF服务,并得到以下错误。

{StatusCode: 400,ReasonPhrase:“坏请求”,版本: 1.1,内容: System.Net.Http.StreamContent,标头:{连接:保持活动 X-帧-选项: SAMEORIGIN XSS保护: 1;mode=block X-内容-类型-选项: nosniff Expect-CT: max-age=604800,report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct“CF-RAY: 4294254a0b608a9d-BOM缓存-控制:无存储日期: Mon,2018年6月11日12:40:21 GMT集-Cookie:__cfduid=d9ac433a81ce1ec1aedad217862472b131528720820;expires=Tue,11 -6月19日12:40:20 :20 GMT;path=/;domain=.lightspeedapp.com;HttpOnly;Secure Server: cloudflare内容长度: 69内容类型: application/json }}

代码语言:javascript
复制
public string RefreshToken(string clientsecretkey, string clientkey, string refreshToken)
    {

        string newToken = "";
        int expTime = 0;
        string scope = "";
        string type = "";

        try
        {
            using (var client = new HttpClient())
            {
                using (var content = new MultipartFormDataContent())
                {
                    var values = new[]
                {
                    new KeyValuePair<string, string>("refresh_token", refreshToken),                       
                    new KeyValuePair<string, string>("client_id",clientkey),
                    new KeyValuePair<string, string>("client_secret",clientsecretkey),
                    new KeyValuePair<string, string>("grant_type", "refresh_token")

                };
                    foreach (var keyValuePair in values)
                    {
                        content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
                    }                        

                    var fileContent = new ByteArrayContent(new byte[100]);
                    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "Foo.txt"
                    };
                    content.Add(fileContent);

                    var requestUri = "https://cloud.lightspeedapp.com/oauth/access_token.php";
                    HttpResponseMessage result = client.PostAsync(requestUri, content).Result;

                    if (result.StatusCode == HttpStatusCode.OK)
                    {
                        var smessage = result.Content.ReadAsAsync<UserCredentials>(new[] { new JsonMediaTypeFormatter() }).Result;

                        if (smessage != null)
                        {
                            newToken = smessage.AccessToken;
                            expTime = smessage.ExpiresIn;
                            scope = smessage.Scope;
                            type = smessage.TokenType;
                        }
                    }
                }
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2018-06-12 14:04:36

我找到解决办法了。下面是变化..。此外,我们必须在最初获得访问令牌时获得刷新令牌。

代码语言:javascript
复制
                    if (result.StatusCode == HttpStatusCode.OK)
                    {
                        var smessage = result.Content.ReadAsAsync<UserCredentials>(new[] { new JsonMediaTypeFormatter() }).Result;

                        if (smessage != null)
                        {

                            newToken = smessage.AccessToken;
                            expTime = smessage.ExpiresIn;
                            scope = smessage.Scope;
                            type = smessage.TokenType;
                            refToken = smessage.RefreshToken;
                        }
                    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50799118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档