如何使用GoogleApiClient为云端点客户端提供凭据

威廉

好的,使用Google Play服务的GoogleApiClient,我已经允许用户选择一个帐户(如果有多个帐户)并确认我的Android应用程序的oauth权限。我需要排行榜和其他一些东西。

但是我也正在使用AppEngine后端,并且需要对此进行身份验证。为此,我需要传递用于验证的emailAccount。

在集成Google Play服务之前,我是手动处理帐户选择的,因此我始终可以访问用户选择的emailAccount。但是GoogleApiClient可以独立处理。

private void signInToGoogleAccount() {
    googleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Plus.API)
        .addScope(Plus.SCOPE_PLUS_LOGIN) // Profile + Circles + ?writing app activities?
        .build();
    googleApiClient.connect();
}

// GPS Connection Callbacks.

@Override
public void onConnected(Bundle bundle) {
    Log.i(TAG, "#onConnected - GoogleApiClient connected!!");
    if (Plus.PeopleApi.getCurrentPerson(googleApiClient) != null) {
        final Person currentPerson = Plus.PeopleApi.getCurrentPerson(googleApiClient);
        String personName = currentPerson.getDisplayName();
        Log.i(TAG, "name=" + personName);
        String personGooglePlusProfile = currentPerson.getUrl();
        Log.i(TAG, "profileUrl=" + personGooglePlusProfile);
    }
}

@Override
public void onConnectionSuspended(int cause) {
    Log.d(TAG, "#onConnectionSuspended - GoogleApiClient connection suspend. cause=" + cause);
    googleApiClient.connect();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        Log.i(TAG, "#onActivityResult RC_SIGN_IN resultCode=" + resultCode + " data=" + data);
        intentInProgress = false;
        if (resultCode == RESULT_OK) {
            if (!googleApiClient.isConnecting()) {
                googleApiClient.connect();
            }
        } else if (resultCode == RESULT_CANCELED) {
            Log.i(TAG, "#onActivityResult RC_SIGN_IN user cancelled");
        } else {
            Log.w(TAG, "#onActivityResult RC_SIGN_IN something weird");
        }
    }
}

private void doRemoteTask() {
    final GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(context, AppConstants.AUDIENCE);

    // This is the info that I need to recover from the GooglePlayServices signin.
    credential.setSelectAccountName(userAccountName);

    final MyRemoteTask myRemoteTask = new MyRemoteTask.Builder(
        AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential
    ).build();
    myRemoteTask.doThing(someArg);
}

所以我需要知道的是:

  1. 使用GoogleApiClient进行授权时,如何获取用户选择的电子邮件帐户的详细信息。
  2. 还是有另一种更友好的GoogleApiClient友好方式将用户身份注入AppEngine Cloud Endpoints客户端。
威廉

令人惊讶的是,为其他人写出问题可以如何帮助缓解思维过程。

解决方法是使用Plus.AccountApi.getAccountName(googleApiClient);例如

@Override
public void onConnected(Bundle bundle) {
    final String accountName = Plus.AccountApi.getAccountName(googleApiClient);
    Log.i(TAG, "#onConnected - GoogleApiClient accountName=" + accountName);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从客户端调用云端点库

来自分类Dev

在Apache CXF中为客户端凭据OAuth 2流散列客户端机密

来自分类Dev

在Apache CXF中为客户端凭据OAuth 2流散列客户端机密

来自分类Dev

Google云端硬盘python客户端/如何使用“ ownedByMe”和“ properties”过滤文件列表?

来自分类Dev

如何从Spring Boot端点为JavaScript客户端流式传输媒体内容

来自分类Dev

如何使用客户端凭据在Office 365中使用团队会议URL创建事件

来自分类Dev

如何使用客户端Windows凭据连接到Web中的SQL Server数据库

来自分类Dev

如何为特定的WCF客户端设置代理凭据?

来自分类Dev

使用Homestead时检索客户端凭据授予令牌

来自分类Dev

Dialogflow 访问角色:使用 JS 客户端部署凭据

来自分类Dev

WCF所有客户端都使用web.config值,而不管客户端提供的设置如何

来自分类Dev

在iOS客户端中使用端点:什么是“ ServiceGenerator的输出”?

来自分类Dev

Netty,使用mongo db中的数据为连接的客户端提供服务

来自分类Dev

如何使用V3 API Python客户端按ID列出Google云端硬盘文件夹的内容?

来自分类Dev

每个IP为Radius客户端提供多个机密

来自分类Dev

如果使用 FromBody 和 FromForm 参数始终为空/新,则 Web 客户端对核心 API 的调用找不到端点

来自分类Dev

使用用户名和密码将 Twilio 注册为扩展/端点 SIP 客户端

来自分类Dev

从服务访问WCF客户端凭据

来自分类Dev

Azure DevOps的客户端凭据流

来自分类Dev

WCF:偶尔拒绝客户端凭据

来自分类Dev

AAD 微软图,客户端凭据

来自分类Dev

错误:升级失败:服务器要求客户端提供凭据(获取配置映射)

来自分类Dev

如何解决“错误:无法使用可用的凭据初始化Google Cloud Firestore客户端”?

来自分类Dev

端点生成的客户端库

来自分类Dev

如何设置Linux客户端以使用通过dhcp提供的ntp信息?

来自分类Dev

使用 Twilio 客户端 (JavaScript SDK) 时如何提供动态状态回调 URL

来自分类Dev

如何从客户端使用Twitter API?

来自分类Dev

如何使用servicestack类型的客户端?

来自分类Dev

创建SSL客户端凭据时发生致命错误。内部错误状态为10013

Related 相关文章

  1. 1

    从客户端调用云端点库

  2. 2

    在Apache CXF中为客户端凭据OAuth 2流散列客户端机密

  3. 3

    在Apache CXF中为客户端凭据OAuth 2流散列客户端机密

  4. 4

    Google云端硬盘python客户端/如何使用“ ownedByMe”和“ properties”过滤文件列表?

  5. 5

    如何从Spring Boot端点为JavaScript客户端流式传输媒体内容

  6. 6

    如何使用客户端凭据在Office 365中使用团队会议URL创建事件

  7. 7

    如何使用客户端Windows凭据连接到Web中的SQL Server数据库

  8. 8

    如何为特定的WCF客户端设置代理凭据?

  9. 9

    使用Homestead时检索客户端凭据授予令牌

  10. 10

    Dialogflow 访问角色:使用 JS 客户端部署凭据

  11. 11

    WCF所有客户端都使用web.config值,而不管客户端提供的设置如何

  12. 12

    在iOS客户端中使用端点:什么是“ ServiceGenerator的输出”?

  13. 13

    Netty,使用mongo db中的数据为连接的客户端提供服务

  14. 14

    如何使用V3 API Python客户端按ID列出Google云端硬盘文件夹的内容?

  15. 15

    每个IP为Radius客户端提供多个机密

  16. 16

    如果使用 FromBody 和 FromForm 参数始终为空/新,则 Web 客户端对核心 API 的调用找不到端点

  17. 17

    使用用户名和密码将 Twilio 注册为扩展/端点 SIP 客户端

  18. 18

    从服务访问WCF客户端凭据

  19. 19

    Azure DevOps的客户端凭据流

  20. 20

    WCF:偶尔拒绝客户端凭据

  21. 21

    AAD 微软图,客户端凭据

  22. 22

    错误:升级失败:服务器要求客户端提供凭据(获取配置映射)

  23. 23

    如何解决“错误:无法使用可用的凭据初始化Google Cloud Firestore客户端”?

  24. 24

    端点生成的客户端库

  25. 25

    如何设置Linux客户端以使用通过dhcp提供的ntp信息?

  26. 26

    使用 Twilio 客户端 (JavaScript SDK) 时如何提供动态状态回调 URL

  27. 27

    如何从客户端使用Twitter API?

  28. 28

    如何使用servicestack类型的客户端?

  29. 29

    创建SSL客户端凭据时发生致命错误。内部错误状态为10013

热门标签

归档