使用G +登录 - 为什么范围" plus.login"不会独自工作?

时间:2015-05-14 20:50:21

标签: android google-api google-plus google-plus-signin

我已经完成了关于这个主题的几十个答案,按照官方的快速入门指南,完成了我所能想到的一切。

我已经在其所有部分设置了我的Google开发者控制台,包括为OAuth和公共API访问设置正确的调试SHA1密钥(甚至不知道是否有必要)。

问题

我在将范围设置为GoogleApiClient时遇到问题。

googleClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Plus.API)
        .addScope(...)
        .build();

我可以使用不同的范围组合登录:

            .addScope(new Scope("https://www.googleapis.com/auth/plus.login"))
            .addScope(new Scope("https://www.googleapis.com/auth/plus.profile.emails.read"))
            //WORKS! OR:

            .addScope(Plus.SCOPE_PLUS_LOGIN) // == https://www.googleapis.com/auth/plus.login
            .addScope(Plus.SCOPE_PLUS_PROFILE) // == https://www.googleapis.com/auth/plus.me
            //WORKS! OR:

            .addScope(new Scope("https://www.googleapis.com/auth/plus.profile.emails.read"))
            //WORKS! OR:

            .addScope(Plus.SCOPE_PLUS_PROFILE) // == https://www.googleapis.com/auth/plus.me
            //WORKS!

它们都运行良好,我看到它们反映在请求中(即,如果我设置login + emails.read,对话框实际上会要求这两个。)

但是,我只需要" https://www.googleapis.com/auth/plus.login"。如果我只设置.addScope(new Scope("https://www.googleapis.com/auth/plus.login"))或等同于.addScope(Plus.SCOPE_PLUS_LOGIN),我会遇到文档错误Toast错误:

  

发生内部错误。

所以这个范围(我唯一需要的)与其他人(例如plus.me)一起工作,但并不孤单。为什么这样,我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以通过以下对我有用的代码替换。

   mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API, Plus.PlusOptions.builder().build())
            .addScope(Plus.SCOPE_PLUS_LOGIN).build();

答案 1 :(得分:0)

  

mGoogleApiClient = new GoogleApiClient.Builder(this)               .addConnectionCallbacks(本)               .addOnConnectionFailedListener(本)               .addApi(Plus.API,Plus.PlusOptions.builder()。build())               .addScope(Plus.SCOPE_PLUS_LOGIN).build();

使用Plus.SCOPE_PLUS_LOGIN并不是一个好主意,因为' Plus'已被弃用。