谷歌认证页面总是显示,如何认证只有第一次



我正在使用googleApi库制作一个带有flutter的日历应用程序。

但是,当你关闭应用程序时,需要在网站上再次进行身份验证。我只想要第一次授权。

有可能吗?

//分枝杆菌

get _SCOPES => [CalendarApi.CalendarScope];
await clientViaUserConsent(_clientID, _SCOPES, prompt)
.then((AuthClient client) async {
CalendarClient.calendar = CalendarApi(client);
calendarId = await CalendarClient.calendar.calendarList
.list()
.then((value) => value.items[0].id);
});
void saveData(AccessCredentials credentials) {
GetStorage().write(credetialKey, {
"accessTokenData": credentials.accessToken.data,
"accessTokenExpiry": credentials.accessToken.expiry.toString(),
"refreshToken": credentials.refreshToken,
"scopes": credentials.scopes,
"idToken": credentials.idToken
});
}
AccessCredentials getCredetial() {
try {
var map = GetStorage().read(credetialKey);
return AccessCredentials(
AccessToken("Bearer", map["accessTokenData"] as String,
DateTime.parse(map["accessTokenExpiry"])),
map["refreshToken"],
map["scopes"].cast<String>(),
idToken: map["idToken"] as String);
} catch (e) {
return null;
}
}

Client cli = Client();
var c = await refreshCredentials(_clientID, getCredetial(), cli)
.catchError((e) {
print(e);
});
authenticatedClient(cli, c);

错误:DetailedApiRequestError(状态:401,消息:请求缺少所需的身份验证凭据。应为OAuth 2访问令牌

您可以使用例如sharedPreferences保存用户会话。每次用户启动应用程序时,您必须首先检查会话是否已保存,这样您就可以跳过身份验证过程,否则您将启动身份验证

我解决了它。

保存访问凭据,并使用autoRefreshingClient;

Client cli = Client();
var c = await refreshCredentials(_clientID, getCredetial(), cli)
.catchError((e) {
print(e);
});
cli = autoRefreshingClient(_clientID, c, cli);

最新更新