gpt4 book ai didi

c# - token 已过期 - 下一步该做什么?

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:24 26 4
gpt4 key购买 nike

我有一个在 WP8.1 RT 上运行的小应用程序,它使用 Live SDK 与 Onedrive 连接。基本上代码是这样的:

 string[] scopes = new string[] { "wl.signin", "wl.skydrive", "wl.offline_access" };
authClientOnedrive = new LiveAuthClient();
LiveLoginResult loginResult = await authClientOnedrive.InitializeAsync(scopes);
if (loginResult.Status != LiveConnectSessionStatus.Connected)
await authClientOnedrive.LoginAsync(scopes);
clientOnedrive = new LiveConnectClient(authClientOnedrive.Session);

这很好用,因为我wl.offline_access 我得到了刷新 token 。据我了解, token 的有效期应为一年。

但是当我得到异常时怎么办 The access token that the provided has expired.?
我的一个用户现在遇到了这种情况,我必须说我错过了在使用 Live SDK api 时在这种情况下该怎么做的信息 - 因为我已经尝试过 authClient.CanLogout 总是 false 并且我无法Logout() 再次登录。有人知道这种情况吗?我需要为此使用 REST api 吗?

最佳答案

public async Task<UserToken> RefreshAccessTokenAsync()
{
var refreshAccessToken = RequestGenerator.RefreshAccessToken(_options.ClientId, _options.ClientSecret, _options.CallbackUrl, UserRefreshToken);
var token = await ExecuteAuthorization<UserToken>(refreshAccessToken);

_options.AccessToken = token.Access_Token;
_options.RefreshToken = token.Refresh_Token;

return token;
}

public IRequest RefreshAccessToken(string clientId, string clientSecret, string callbackUrl, string refreshToken)
{
var nvc = new Dictionary<string, string>();
nvc["client_id"] = clientId;
nvc["redirect_uri"] = callbackUrl;
nvc["client_secret"] = clientSecret;
nvc["refresh_token"] = refreshToken;
nvc["grant_type"] = "refresh_token";

return new Request
{
BaseAddress = OAuthUrlBase,
Resource = OAuthResource.Replace("{verb}", TokenVerb),
Method = HttpMethod.Post,
Content = new FormUrlEncodedContent(nvc)
};
}

关于c# - token 已过期 - 下一步该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28315286/

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