Android 平台上的 Google+ API 和 Google+ 登录弃用和停用

Posted

技术标签:

【中文标题】Android 平台上的 Google+ API 和 Google+ 登录弃用和停用【英文标题】:Google+ APIs and Google+ Sign-in Deprecation & Sunset on Android Platform 【发布时间】:2019-06-16 20:49:30 【问题描述】:

最近,我收到一封来自 Google 的电子邮件:

2019 年 3 月 7 日,所有 Google+ API 和 Google+ 登录功能都将关闭 完全下降。这将是从晚些时候开始的逐步关闭 1 月,对这些 API 的调用开始间歇性失败,因为 最早是 2019 年 1 月 28 日。

在电子邮件的以下部分:

XXX GP (api-project-123123123123) 加上 v1 plus.people.get

我正在使用com.google.android.gms.common.api.GoogleApiClient,它是用于提供登录功能的连接回调。

mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Games.API).addScope(Games.SCOPE_GAMES)
                .build();

对于排行榜和成就:

startActivityForResult(Games.Achievements.getAchievementsIntent(mGoogleApiClient), 0);
startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient,
                        "leaderboardX"), 0);

我的应用不依赖于已弃用的范围: https://developers.google.com/+/mobile/android/api-deprecation

在 Github 存储库上的 Google Play 服务新示例中: https://github.com/playgameservices/android-basic-samples

您可以在以下代码 sn-ps 中看到新的 Google SignIn 实现和游戏功能使用。

登录:

mGoogleSignInClient = GoogleSignIn.getClient(this,
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build());

mGoogleSignInClient.silentSignIn().addOnCompleteListener(this,
        new OnCompleteListener<GoogleSignInAccount>() 
          @Override
          public void onComplete(@NonNull Task<GoogleSignInAccount> task) 
            if (task.isSuccessful()) 
              Log.d(TAG, "signInSilently(): success");
              onConnected(task.getResult());
             else 
              Log.d(TAG, "signInSilently(): failure", task.getException());
              onDisconnected();
            
          
        );

对于游戏功能:

@Override
  public void onShowAchievementsRequested() 
    mAchievementsClient.getAchievementsIntent()
        .addOnSuccessListener(new OnSuccessListener<Intent>() 
          @Override
          public void onSuccess(Intent intent) 
            startActivityForResult(intent, RC_UNUSED);
          
        )
        .addOnFailureListener(new OnFailureListener() 
          @Override
          public void onFailure(@NonNull Exception e) 
            handleException(e, getString(R.string.achievements_exception));
          
        );
  

  @Override
  public void onShowLeaderboardsRequested() 
    mLeaderboardsClient.getAllLeaderboardsIntent()
        .addOnSuccessListener(new OnSuccessListener<Intent>() 
          @Override
          public void onSuccess(Intent intent) 
            startActivityForResult(intent, RC_UNUSED);
          
        )
        .addOnFailureListener(new OnFailureListener() 
          @Override
          public void onFailure(@NonNull Exception e) 
            handleException(e, getString(R.string.leaderboards_exception));
          
        );
  

我有点困惑,我是否必须实现新的登录和排行榜/成就 API?

我是否需要进行更改才能不受 Google+ API 和 Google+ 登录失效的影响?

【问题讨论】:

您是否检查并验证了您是否正在调用 Google+ API?您可以使用 https://console.cloud.google.com/apis/api/plus.googleapis.com/metrics?project=mygoogleprojectname 进行检查,将 mygoogleprojectname 替换为 Google 声称已从其中检测到 API 使用的任何项目。 感谢@jess 的建议,我已经检查过了,从 Google 收到的电子邮件中显示有“plus.people.get”电话。问题是,我无法将这些 http 调用与我的实现相匹配。我使用 Charles 代理检查了客户端上的 http 调用,但看不到对“googleapis.com/plus/v1/people...”的任何调用。它可能是对 Google 身份验证服务的重定向或任何后端调用。 我怎样才能找到导致这个“plus.people.get”调用的 API(Android、php、web)?如果有人能提出建议,我会很高兴。 请在github查看同样的问题。 【参考方案1】:

您粘贴的代码不依赖于 Google+ API,不应受到 Google+ 关闭的影响。

您是否在游戏的早期版本中使用过任何 PLUS 示波器,而这可能仍然在某些用户设备上?如果您当前的代码没问题,可能只有一些非常旧的版本会受到影响。

在云开发者控制台,您项目的 API 部分,您应该能够查看 Google+ 或游戏 API 的流量水平,看看它们是否有可能影响您的大量用户。您还可以在那里打开 Google+ API 详细信息,以查看正在调用哪些特定方法。

【讨论】:

以上是关于Android 平台上的 Google+ API 和 Google+ 登录弃用和停用的主要内容,如果未能解决你的问题,请参考以下文章

使用哪个 API 访问 Android 设备上的 GPS 位置? Android API 或 Google 位置服务 API

查找位置:Google Play 位置服务或 Android 平台位置 API

查找位置:Google Play 位置服务或 Android 平台位置 API

com.google.android.youtube.api.jar.client.RemoteEmbeddedPlayer.x 上的 android.os.DeadObjectException

颤振:平台异常(sign_in_failed,com.google.android.gms.common.api.ApiException:10:,空)

Android 上的 Google Ads API 客户端引发 ProviderNotFoundException