Android React native:auth0 2的令牌问题在调试会话期间突然变得无效
我有一个运行asp.net的服务器。我遵循web上的一个教程,该教程使我的服务器能够向请求它的客户端发出令牌Auth0 2,并创建web api,以便我的android emulator能够从服务器检索一些数据。我将令牌过期日期设置为365天。我试图通过提供授权类型、用户名和密码向Postman请求令牌,服务器按预期向我返回令牌,我使用Postman的Get方法从API端点获取一些数据并在标头中提交令牌,服务器按预期成功地向我返回数据,没有任何问题。邮递员能够使用昨天发布的令牌从服务器获取数据,因此我假设令牌实现是正确的 服务器:Android React native:auth0 2的令牌问题在调试会话期间突然变得无效,android,react-native,oauth-2.0,bearer-token,Android,React Native,Oauth 2.0,Bearer Token,我有一个运行asp.net的服务器。我遵循web上的一个教程,该教程使我的服务器能够向请求它的客户端发出令牌Auth0 2,并创建web api,以便我的android emulator能够从服务器检索一些数据。我将令牌过期日期设置为365天。我试图通过提供授权类型、用户名和密码向Postman请求令牌,服务器按预期向我返回令牌,我使用Postman的Get方法从API端点获取一些数据并在标头中提交令牌,服务器按预期成功地向我返回数据,没有任何问题。邮递员能够使用昨天发布的令牌从服务器获取数据,
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(365),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
app.UseOAuthBearerTokens(OAuthServerOptions);
Android react native:
登录以从服务器获取访问令牌
var formBody="grant_type=password&username="+userEmail+"&password="+userPassword;
fetch('http://aaa.aaaa.com/token', {
method: 'POST',
body: formBody,
headers: {
//Header Defination
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
},
})
.then((response) => response.json())
.then((responseJson) => {
//Hide Loader
setLoading(false);
console.log(responseJson);
// If server response message same as Data Matched
//if (responseJson.status == 1)
if (responseJson.access_token)
{
global.token=responseJson.access_token;
AsyncStorage.setItem('access_token', responseJson.access_token);
//console.log(responseJson.data[0].user_id);
//navigation.replace('DrawerNavigationRoutes');
navigation.navigate('NavigatorHome');
} else {
//AsyncStorage.setItem('user_id', 'test1');
//navigation.navigate('NavigatorHome');
//setErrortext('Please check your email id or password');
console.log('Please check your email id or password');
}
})
.catch((error) => {
//Hide Loader
setLoading(false);
console.error(error);
});
从API端点获取数据
var accessToken=global.token;
var formBody="";
formBody = JSON.stringify({
'module': 'order',
'action': 'get',
'value':route.params.orderID
})
fetch('http://aaa.aaaa.com/api/Orders?ID='+formBody, {
method: 'Get',
headers: {
//Header Defination
Accept: 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + accessToken,
},
})
.then((response) => response.json())
.then((responseJson) => {
//Hide Loader
//setLoading(false);
console.log(responseJson);
// If server response message same as Data Matched
//if (responseJson.status == 1)
})
.catch((error) => {
//Hide Loader
//setLoading(false);
console.error(error);
});
之后,我尝试使用android emulator运行。首先,我使用fetch方法,提供grant_类型、用户名和密码,正如预期的那样,服务器返回一个令牌,我将其存储在异步存储中。然后,我尝试通过提供我之前请求的令牌来获取一些数据,服务器能够毫无问题地返回数据。但是,如果我离开模拟器15分钟或30分钟,现在当我尝试从服务器获取数据时,它会失败。我所做的是通过再次发送授权类型、用户名和密码来尝试请求一个新令牌,新令牌按预期工作
这太奇怪了!我在服务器上仔细检查了我的访问令牌设置,该设置为365天,邮递员使用昨天发出的令牌可以毫无问题地获取数据,为什么发给我的模拟器的令牌在15或30分钟内过期?希望有人能指出我的问题。提前谢谢 哦,糟糕!邮递员正在从本地主机服务器获取数据,react native正在从prod服务器获取数据。[这里]()