Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GoogleAuthUtil/GoogleAccountCredential 1.17.0-rc SDK 1.8.8 API 19在android中不适用于google端点_Java_Android_Google App Engine_Google Cloud Endpoints - Fatal编程技术网

Java GoogleAuthUtil/GoogleAccountCredential 1.17.0-rc SDK 1.8.8 API 19在android中不适用于google端点

Java GoogleAuthUtil/GoogleAccountCredential 1.17.0-rc SDK 1.8.8 API 19在android中不适用于google端点,java,android,google-app-engine,google-cloud-endpoints,Java,Android,Google App Engine,Google Cloud Endpoints,测试: 服务器: 探索者: 源代码: 使用GoogleAuthUtil.getToken()中的令牌时,只有第三个curl命令不起作用。 请注意,web客户端和api资源管理器工作正常,只有android不向端点服务器进行身份验证 编辑1: 为什么GoogleAuthUtil.getToken()生成的令牌在curl测试1和2中工作,而不是在3中工作?如果我在所有3项工作中使用web客户端生成的令牌 当我尝试credential.setSelectedAccountName(emailAccou

测试:

服务器:

探索者:

源代码:

使用
GoogleAuthUtil.getToken()
中的令牌时,只有第三个curl命令不起作用。 请注意,web客户端和api资源管理器工作正常,只有android不向端点服务器进行身份验证

编辑1:

为什么
GoogleAuthUtil.getToken()
生成的令牌在curl测试1和2中工作,而不是在3中工作?如果我在所有3项工作中使用web客户端生成的令牌

当我尝试
credential.setSelectedAccountName(emailAccount)时它也没有给我服务器上的用户

编辑2:

我在服务器日志中看到了这一点

#!/bin/bash
curl -s -X GET "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=$1"
curl -s -X GET "https://www.googleapis.com/oauth2/v2/userinfo?access_token=$1"
curl -s -v -X POST "https://gcl-11.appspot.com/_ah/api/rest1/0/greetings/authed" \
        -H "Authorization:  Bearer $1" \
        -H "Content-Type: application/json; charset=UTF-8" \
        -d ""
但是代币应该被允许吗?(见下面的链接)

编辑3:


原来我的pom决定不编译我的更改并上传了旧类。。。现在可以使用。

您在
授权
标题中提供的令牌是为特定的客户ID制作的,这正是您所需要的

这是获取有效凭据对象所需的代码段:

com.google.api.server.spi.WebApisUserService isClientIdAllowed: ClientId in token was not allowed: 522156758812-speqt3cnr7ggje0r3hhjtjg14iigru1f.apps.googleusercontent.com`
它做出了一系列假设:

  • 您正在从名为
    MainActivity
    的类调用。如有必要,将其更换
  • 您有一个名为
    AppConstants
    的类,该类具有
    访问群体
    属性<代码>访问群体
应设置为web客户端ID的值
  • emailAccount
    是设备上配置的Google帐户的有效电子邮件地址
  • 拥有此对象后,应将其传递到构建器中(而不是使用
    setOauthToken
    )。然后你可以打电话:

    GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(
        MainActivity.this, AppConstants.AUDIENCE);
    credential.setSelectedAccountName(emailAccount);
    

    你能告诉我如何创建一个正确的android令牌吗?尝试了credential和getToken,但它们没有在服务器上为我提供用户对象。更新问题:服务器正在忽略我的id?
    service.greetings().authed().execute()