Android Google登录Auth NeedPermission问题

时间:2014-06-22 14:23:56

标签: android google-api google-login

我现在正在我的应用程序中添加谷歌登录。但我得到了来自此范围scope = "oauth2:" + Scopes.PLUS_LOGIN的令牌,但服务器无法通过该令牌获取用户的电子邮件。所以我添加了我的范围" https://www.googleapis.com/auth/userinfo.email"有一个空间。但我只收到系统错误。像这样

  

06-19 15:26:33.444 25229-25460 / W / System.err:   com.google.android.gms.auth.UserRecoverableAuthException:   NeedPermission 06-19 15:26:33.445 25229-25460 /   W / System.err:at   com.google.android.gms.auth.GoogleAuthUtil.getToken(未知来源)   06-19 15:26:33.447 25229-25460 / W / System.err:at   com.google.android.gms.auth.GoogleAuthUtil.getToken(未知来源)

我完全不了解我需要什么样的许可。 这也是我的代码。

AsyncTask task = new AsyncTask() {
    @Override
    protected Object doInBackground(Object... params) {
        final String CLIENT_ID = "abc123.apps.googleusercontent.com";
        final List<String> SCOPES = Arrays.asList(new String[]{
            "https://www.googleapis.com/auth/plus.login",
            "https://www.googleapis.com/auth/userinfo.email"
        });
        try {
            String scopes = String.format("oauth2:server:client_id:%s:api_scope:%s", CLIENT_ID , TextUtils.join(" ", SCOPES));
            String token = GoogleAuthUtil.getToken(context, Plus.AccountApi.getAccountName(mGoogleApiClient), scopes);
            userInfo = new GoogleUserInfo(email, finalPersonPhotoUrl, currentPerson.getId(), token, currentPerson.getDisplayName());`enter code here`
        }
        catch (UserRecoverableAuthException e) {
            // This error is recoverable, so we could fix this
            // by displaying the intent to the user.
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (GoogleAuthException e) {
            e.printStackTrace();
        }
        return null;
        }
    };
task.execute((Void) null);

我如何获得可通过电子邮件获取用户信息的令牌? ? ?

1 个答案:

答案 0 :(得分:1)

我尝试了很多方法,但我不能,所以我收到了像

这样的电子邮件
String email = Plus.AccountApi.getAccountName(GoogleApiClient);

以及用户的其他信息,您可以通过调用Plus.PeopleApi.getCurrentPerson来获取所有信息