使用GoogleApiClient.Builder的电子邮件的范围常量

时间:2014-08-01 18:36:57

标签: android google-plus google-oauth

此处列出了Google+授权范围列表:https://developers.google.com/+/api/oauth。细...

在Android客户端的QuickStart示例中,获取GoogleApiClient实例的代码如下所示,但带有“Plus.SCOPE_PLUS_LOGIN”范围。但我希望改为使用“电子邮件”范围。我无法找到“电子邮件”范围的常量。

  private GoogleApiClient buildGoogleApiClient() {
// When we build the GoogleApiClient we specify where connected and
// connection failed callbacks should be returned, which Google APIs our
// app uses and which OAuth 2.0 scopes our app requests.
return new GoogleApiClient.Builder(this)
    .addConnectionCallbacks(this)
    .addOnConnectionFailedListener(this)
    .addApi(Plus.API, Plus.PlusOptions.builder().build())
    .addScope(Plus.SCOPE_PLUS_LOGIN) // I WANT AN email SCOPE!!!
    .build();

}

我是否必须自己创建 Scope 实例?例如:

Scope emailScope = new Scope("email"); // like this?????

2 个答案:

答案 0 :(得分:4)

您可以使用Plus.AccountApi.getAccountName()检索已登录用户的电子邮件地址:

// Note mGoogleApiClient must be connected for this to work
String email = Plus.AccountApi.getAccountName(mGoogleApiClient);

根据开发者文档的说明:

  

获取Google Play服务解析的帐户名称。必须在<uses-permission android:name="android.permission.GET_ACCOUNTS" />中声明权限AndroidManifest.xml才能使用此方法。

答案 1 :(得分:0)

您可以为其创建新范围。这对我有用:

     Builder builder = new GoogleApiClient.Builder(this)
    .addApi(Plus.API)
    .addScope(Plus.SCOPE_PLUS_PROFILE)
    .addScope(new Scope("https://www.googleapis.com/auth/userinfo.email"))