2017-07-21 49 views
1

我按照auth0提供的指南进行了身份验证,但是我已经厌倦了每次打开应用程序都必须登录,并且希望开始存储并利用刷新令牌。不过,我似乎无法获得刷新令牌,它始终为空。Xamarin和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(); 
     } 
    } 

如果我包括的范围,然后我得到一个错误回来的响应不包含身份令牌。如果我不包括我只是没有得到刷新令牌。

+0

您使用的是什么OAuth-Library?这可能有助于遵循你的过程。 –

回答

0

对我来说,诀窍是添加范围行,如下所示。

原始代码:

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的”在它的前面。