flutter开发主要引入插件google_sign_in | Flutter package (pub.dev)。
由于google_sign_in文档中描述不清楚,本想通过查阅其他人的源码以加快自己的上手速度,从而忽略flutter/android开发者文档的重要性。
前期入手文档,介绍流程挺详细,也适合小白专看。详见下文:
Google Sign-in in Flutter (without Firebase) | by danial | Medium (danials.space)
但是,该文中却有几处误导了我。
第一个误导处,见下图,按理解应该是从AndroidManifest.xml中获取package内容并填入Package Name中。我也确实是如此做了。
第二个误导处,见下图,GoogleSignIn的用法,需要填入ServerClientId或者ClientId。
如果按照上两处流程走,那不可避免到获取用户信息环节出现“APIException:10 null null”。为了解决这个问题,查看了各种各样的文档,也发现有很多提问者还在继续提问着。我按照各个网上的解答,尝试了几次都无功而返。但是,就是没有想起去查阅flutter官方文档……
幸好功夫不负有心人,最终被我找到一篇文章。详见链接下文:Flutter Google Sign In Without Firebase - Sudorealm
这篇文章中提到了几点,让我无地自容。
- Package Name 的理解以及配置错误。
- 在app/build.gradle配置中看到了明显的提示。框架自身专门明显提示:TODO内容。
根据上图中的链接去查阅,就联想到这三者间的关系。
- 代码介绍中并没有使用到serverClientId和clientId。
综上所述几点修正后,成功获取到google user信息。
本文转载自: 掘金