当前位置: 首页 > 知识库问答 >
问题:

从Google Drive Android API获取帐户名/电子邮件

董霖
2023-03-14

我正在使用新的Google Drive Android API,我可以连接,并且可以做它允许我做的所有事情,但为了使用电子表格服务,我需要从登录用户中提取帐户名/电子邮件。

我该怎么做?

下面是我连接Google Drive API的代码。它工作得很好。

private void connect() {

    if (isGooglePlayServicesAvailable()) {
        if (mGoogleApiClient == null) {
            mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .addApi(Drive.API)
                    .addScope(Drive.SCOPE_FILE)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();
        }
        // And, connect!

        if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) {
            mGoogleApiClient.connect();
            writeLog("Connecting...");
        }

    }
}

这里是我使用电子表格服务API的地方,但我需要帐户名来获取令牌。

String accountName = "???"; // how do I get this From GoogleClientApi / mGoogleApiClient ?
String accessToken = GoogleAuthUtil.getTokenWithNotification(GDriveActivity.this, accountName, scope, null);
SpreadsheetService service = new SpreadsheetService("v1");

我尝试过添加以下内容:

String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);

...在onConnection方法中,但它抛出了一个NullPointerException

此外,以下是我的权限:

<uses-permission
    android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission
    android:name="android.permission.VIBRATE" />
<uses-permission
    android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
    android:name="android.permission.GET_ACCOUNTS" />
<uses-permission
    android:name="android.permission.NETWORK" />
<uses-permission
    android:name="android.permission.USE_CREDENTIALS" />

共有2个答案

都浩淼
2023-03-14

我现在又回到了下面,它允许我随时获取该帐户。

当我问这个问题时,我的印象是,我只有在最初连接时才能得到它。显然我是错的。

private String getAccountName() {

    String accountName = null;

    AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
    Account[] list = manager.getAccounts();
    for (Account account : list) {
        if (account.type.equalsIgnoreCase("com.google")) {
            accountName = account.name;
            break;
        }
    }
    return accountName;
}

当然,在AndroidManifest中包括以下权限:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
苍温文
2023-03-14

您需要添加:

                    .addApi(Plus.API)

构建客户端时。然后这将在onConnect(Bundle)中工作:

String accountName = Plus.AccountApi.getAccountName(mGoogleApiClient);

假设您已经拥有正确的权限(您可以这样做):

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
 类似资料:
  • 您可以通过此界面创建和管理域的电子邮件帐户。 您可以创建电子邮件地址,配置邮件客户端,更改密码以及直接访问您的Webmail。 创建电子邮件地址 要为您的域创建电子邮件地址,请按以下步骤操作 - Step 1 - 单击cPanel主页的“电子邮件”部分中的“ Email Accounts链接。 Step 2 - 在电子邮件帐户中,您会在顶部找到添加电子邮件帐户。 Step 3 - 添加您要创建的电

  • 我知道这里已经有很多关于向hotmail发送电子邮件的问题了。我已经通读了它们,以及过去几周的许多在线帖子,但仍然无法解决这个问题。 我遇到的问题是,我无法向拥有hotmail电子邮件地址的客户发送电子邮件。我可以向雅虎发送电子邮件,也可以向gmail发送电子邮件(尽管这些邮件似乎进入了垃圾文件夹),但是当我向hotmail电子邮件地址发送电子邮件时,它们似乎永远不会到达。 我在PHP Symfo

  • 我在我的系统中使用谷歌广告API PHP库。但是我没有在这里提供的API列表中找到以下2个APIhttps://developers.google.com/google-ads/api/docs/account-management/create-account: API,以查明用户是否已经存在使用电子邮件的谷歌广告帐户?如果找到,则返回其10位数的客户ID。 我在几个网站上见过同样的过程。每当用

  • null googleapiclient.errors.httperror:https://www.googleapis.com/gmail/v1/users/me/labels?alt=json返回“错误请求&>; 但是当我从https://console.developers.google.com/apis/api/gmail.googleapis.com/Quotas检查配额时,会显示我使用

  • 我正在尝试从GitHub获取一个用户的电子邮件地址,我只是在使用Postman测试过程。我有一个令牌,它有user和user:email作用域,点击https://api.github.com/user可以得到用户的信息。私人电子邮件在该endpoint不可见,所以我也点击https://api.github.com/user/emails。电子邮件endpoint给了我一个404。 与404一起