获取用户Gmail账户

有些时候我们需要获取当前手机上绑定的谷歌账户名,也就是Gmail账户名,以便标记不同用户。

现在我发现主要有三种方式获取gmail账户:

1 android 自带API

这种方式最简单,最容易实现,但是这种方式需要一个GET_ACCOUNTS的用户权限,在stackoverflow 上说这个权限是a heavy duty permission. 因为有这个权限之后,不仅是设备上的Gmail账户,其他账户都可以暴露在程序中,而有时我们仅仅只需要gmail账户。而据我观察这个API在设备同时关联了两个Gmail的情况下无法区分哪个是主账户。

2 google play service

这种方式避免了上面所提及的权限问题,但是这种方式也有一个小小的问题,就是他获取的方式是发起一个Intent,这个Intent会创建一个Dialog,然后让你选择一个账户,通过这种方式获取到gmail账户

3 google+

这种方式其实是第二种方式的延续,并且还会需要第一种方式的权限,这种方式的好处是不仅可以获取用户Gmail还可以获取其他如用户头像、google+u上的昵称等其他信息。在本文中,这种方式不做重点介绍,只是附带一个链接,那个链接中已经讲的非常详尽并且还有源码(我也会附上)。

下面来详细说明前两种的实现方式:

1 第一种方式:

 public static String getEmail(Context context) {
    AccountManager accountManager = AccountManager.get(context);
    Account[] accounts = accountManager.getAccountsByType("com.google");//获取google账户
    Account account = accounts.length > 0 ? accounts[0] : null;//取第一个账户
    return account == null ? null : account.name;
  }
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

2 第二种方式

这种方式必须要求有google play services的库,这个库可以在sdk manager中进行下载,不过鉴于长城的影响,这个很难下载,最好是找一个离线的直接放到android sdk下。主要代码逻辑如下:

        if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext())) {
          try {
            Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE },
                false, null, null, null, null);
            startActivityForResult(intent, REQUEST_CODE_EMAIL);
          } catch (ActivityNotFoundException e) {
          }
        }
      }

 activity result:
  private static final int REQUEST_CODE_EMAIL = 1;
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
      String gmail = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
    }
  }

3 最后一种方式实现稍复杂:

这里引用一位印度开发者的文章:androidhive  文章写得通俗易懂,文档质量也很好,有图有代码有源码。

开源中国好像没法上传附件,需要的留邮箱好了:)

获取用户Gmail账户

时间: 2024-11-01 10:39:11

获取用户Gmail账户的相关文章

UWP 应用获取各类系统、用户信息 (1) - 设备和系统的基本信息、应用包信息、用户数据账户信息和用户账户信息

应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Github: https://github.com/validvoid/UWP-SystemInfoCollector 由于涉及内容较多,故本文会分为多篇展开.本篇介绍获取设备和系统的基本信息.应用包信息.用户数据账户信息和用户账户信息. 原博客阅读地址:http://validvoid.net/uwp-

微信网页授权认证获取用户的详细信息,实现自动登陆-微信公众号开发干货

原创声明:本文为本人原创作品,绝非他处转账,转载请联系博主 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开发公众号需要准备或了解什么 web开发工具:官方提供的开发工具,使用自己的微信号来调试微信网页授权.调试.检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出.下载地址:web开发工具下载 开发文档:https://mp.weixin.qq.com/wiki

一种获取用户信息的sql攻击

本文不是写SQL注入攻击,除了SQL注入攻击之外,还有一种SQL数据库的漏洞.写本文的目的主要是让开发者在构建网站时,能意思到这个安全问题.这个漏洞并不是太常见,我将为展示这种攻击手法,希望大家能引以为鉴,及时做好相应的防御措施. 在注册新用户时候,开发者可能会按照以下的逻辑来运行. 首先检查用户名密码: "SELECT * FROM users WHERE username='用户名'" 如果用户名在数据库中不存在,执行以下SQL语句INSERT INTO users(usernam

[iOS微博项目 - 3.4] - 获取用户信息

github: https://github.com/hellovoidworld/HVWWeibo   A.获取用户信息 1.需求 获取用户信息并储存 把用户昵称显示在“首页”界面导航栏的标题上 2.思路 使用微博API 将用户信息封装到HVWUser模型中 把获取的用户名存放到账户信息HVWAccountInfo模型中存储到沙盒 3.实现 1 // HVWHomeViewController.m 2 /** 获取用户信息 */ 3 - (void) setupUserInfo { 4 //

微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆

原创声明:本文转来源本人另一博客[http://blog.csdn.net/liaohaojian/article/details/70175835]绝非他人处转载 从接触公众号到现在,开发维护了2个公众号,开发过程中遇到很多问题,现在把部分模块功能在这备案一下,做个总结也希望能给其他人帮助 工欲善其事,必先利其器,先看看开发公众号需要准备或了解什么 web开发工具:官方提供的开发工具,使用自己的微信号来调试微信网页授权.调试.检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入

OAuth2.0 微博登陆网站功能的实现(一)获取用户授权及令牌 Access Token

在登陆一些网站的时候,可以选择登陆方式为第三方登陆,例如微博登陆,以爱奇艺为例,进入首页,点击 ”登陆“,会弹出登录框: 除了本站登陆外,还可以选择其他第三方登陆,比如微博登陆.QQ 登陆.微信登陆等. 选择微博登陆后,爱奇艺会向用户申请授权用于微博登陆(当用户已经登陆了微博时会直接申请授权,当用户没有登陆时会提示用户登陆微博): 此时提示窗口的 url 为:https://api.weibo.com/oauth2/authorize?scope=&redirect_uri=http%3A%2F

使用微信公众平台测试账号开发“网页授权获取用户基本信息”功能

众所周知,微信公众号分为订阅号.服务号和企业号.撇开企业号不谈,虽然只有服务号能够通过微信接口获得用户级别信息(特别是针对每个公众号唯一的openId),但我们可以仍可以在未认证的订阅号中通过平台测试号开发测试用户基本信息. 微信第三方登录的原理和流程不再赘述,下面说明一下测试号开发的过程. 首先打开测试页面,先登录任一类型的公众号(包括未认证的),在左侧菜单找到 开发-->开发者工具,进入“公众平台测试账号”,这里时需要刷微信认证的二维码(任一微信账户都可以,与登录微信公众平台的账号无关).

【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,博主只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一个组件,目前支持如QQ.微信.新浪微博.腾讯微博.开心网.人人网.豆瓣.网易微博.搜狐微博.facebook.twitter.googl

C#微信开发之旅(八):通过授权code以及openid获取用户信息

要将我们的Web账号和微信账号绑定到一起,必须要用到微信openid的概念,每个账号对于不同公众号都会有一个openid ,可以根据openid与我们的账号关联到一起. 而openid 的获取最主要的: 微信推送给我们的各种消息 网页授权 可能用到的地方: 注册(通过网页授权获取openid,与注册的账户关联起来) 公众号菜单配置为网页授权Url,免登陆 统计分析(比如:关注用户中的注册.未注册用户数量) 直接上代码:(由于开发过程中未用到 授权snsapi_userinfo的,所以代码先空着,