我正在使用google_sign_in包将Google Sign In集成到我的flutter应用程序中,我注意到一旦用户登录,您就可以看到显示名称,但不能看到名字和姓氏:
final GoogleSignInAccount googleSignInAccount =
await googleSignIn.signIn();
final name = googleSignInAccount.displayName; // exists
final firstName = googleSignInAccount.givenName; // does not exist
final lastName = googleSignInAccount.familyName; // does not exist
我还注意到,用于Google登录的Android和iOS库确实包括GivenName
和FamilyName
字段,但出于某种原因,它被排除在flutter库之外。
我是不是漏掉了什么?是否有一种方法可以使用额外的api调用来检索这些字段?
注意:请不要响应,只需通过GoogleSigninAccount.displayName.split(“”);
将显示名称拆分为几个部分。这不是一个解决方案,因为显示名称并不总是用户的全名,或者显示名称可能超过2个单词。
我发现可以从下面的身份验证步骤中检索的id令牌中提取这些值:
final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication;
final idToken = googleSignInAuthentication.idToken;
创建一个将JWT令牌解析为映射的方法:
static Map<String, dynamic> parseJwt(String token) {
// validate token
if (token == null) return null;
final List<String> parts = token.split('.');
if (parts.length != 3) {
return null;
}
// retrieve token payload
final String payload = parts[1];
final String normalized = base64Url.normalize(payload);
final String resp = utf8.decode(base64Url.decode(normalized));
// convert to Map
final payloadMap = json.decode(resp);
if (payloadMap is! Map<String, dynamic>) {
return null;
}
return payloadMap;
}
从这里,given_name
和family_name
很容易检索:
Map<String, dynamic> idMap = parseJwt(idToken);
final String firstName = idMap["given_name"];
final String lastName = idMap["family_name"];
当我用R在web上抓取研究文章时,我遇到了HTML代码,其中a
我在我的Java应用程序中使用Jackson JSON库及其Tree Model系统()。在这种情况下,我需要检查是否包含给定的。我正在浏览JavaDocs,并且没有看到的任何类型的方法。我最终自己写了一个包含方法: 单元测试: 我是否错过了杰克逊的一些东西,我正在复制一些我错过的图书馆方法。否则,还有比我做的更好的方法吗?
问题内容: 我有一个的条目: 目前,我正在检查它是否包含真像这样: 这是检查布尔数组的 最快 方法吗?如果不是,执行此检查的最快方法是什么? 编辑: 通过在Android 4.03 Samsung S2设备上将其作为应用程序运行,我对您的答案中的方法进行了计时,如下所示: 在五次跑步中的时间排名最高,排名第一: 在5334和11584 ns之间: } return false; 在160542和1
问题内容: 我看到人们正在使用另一个列表来查看列表中是否存在某项,但是有一种快速的方法吗?: 问题答案: 您可以使用以下语法: 同样,逆运算符: 它适用于列表,元组,集合和字典(检查键)。 请注意 ,这是列表和元组中的O(n)操作,而集合和字典中是O(1)操作。
问题内容: 具有java.sql.ResultSet的实例,如何检查它是否包含名为“ theColumn”的列? 问题答案: 您可以使用ResultSetMetaData遍历ResultSet列,并查看列名是否与指定的列名匹配。 例:
问题内容: 使用普通的JavaScript(不是jQuery),是否可以检查元素是否 包含 类? 目前,我正在这样做: 问题是,如果我将HTML更改为此… …不再存在完全匹配的内容,因此我得到的默认输出为none()。但我还是想输出为,因为还 包含 了类。 问题答案: 使用方法: 这适用于所有当前浏览器,并且也有polyfill支持旧版本的浏览器。 或者 ,如果您使用较旧的浏览器,并且不想使用po