Xamarin 和 Auth0 - 获取刷新令牌
Posted
技术标签:
【中文标题】Xamarin 和 Auth0 - 获取刷新令牌【英文标题】:Xamarin and Auth0 - getting refresh tokens 【发布时间】:2017-12-28 02:31:20 【问题描述】:我按照 auth0 提供的指南进行了身份验证,但我已经厌倦了每次打开应用程序时都必须登录并想要开始存储和利用刷新令牌。但是我似乎无法获得刷新令牌,它始终为空。
在我的 LoginActivity 中,我有以下内容
_client = new Auth0Client(new Auth0ClientOptions
Domain = Resources.GetString(Resource.String.auth0_domain),
ClientId = Resources.GetString(Resource.String.auth0_client_id),
//Scope = "offline_access",
Activity = this
);
并像这样处理登录
_authorizeState = await _client.PrepareLoginAsync(new audience = "myaudience.blahblahblah");
protected override async void OnNewIntent(Intent intent)
base.OnNewIntent(intent);
var loginResult = await _client.ProcessResponseAsync(intent.DataString, _authorizeState);
var sb = new StringBuilder();
if (loginResult.IsError)
sb.AppendLine($"An error occurred during login: loginResult.Error");
else
var mainActivity = new Intent(this, typeof(MainActivity));
mainActivity.PutExtra("token", loginResult.AccessToken);
StartActivity(mainActivity);
Finish();
如果我包含范围,那么我会收到一个错误,即响应不包含身份令牌。如果我不包括在内,我就不会获得刷新令牌。
【问题讨论】:
您使用的是什么 OAuth-Library?这可能有助于遵循您的流程。 【参考方案1】:对我来说,诀窍是添加 Scope 行,如下所示。
原代码:
client = new Auth0Client(new Auth0ClientOptions
Domain = Resources.GetString(Resource.String.auth0_domain),
ClientId = Resources.GetString(Resource.String.auth0_client_id),
Activity = this
);
改变和工作的一个:
client = new Auth0Client(new Auth0ClientOptions
Domain = Resources.GetString(Resource.String.auth0_domain),
ClientId = Resources.GetString(Resource.String.auth0_client_id),
Activity = this,
Scope = "openid offline_access"
);
我只试过这个:
Scope = "offline_access"
但是收到一个错误,直到前面的“openid”。
【讨论】:
哦,我已经为此苦苦挣扎多年了!这完全解决了它,谢谢! :)以上是关于Xamarin 和 Auth0 - 获取刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章