Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
已通过oAuth2(Grails/Java)身份验证的用户的Google Tasks服务对象_Java_Grails_Oauth 2.0_Google Api_Google Tasks Api - Fatal编程技术网

已通过oAuth2(Grails/Java)身份验证的用户的Google Tasks服务对象

已通过oAuth2(Grails/Java)身份验证的用户的Google Tasks服务对象,java,grails,oauth-2.0,google-api,google-tasks-api,Java,Grails,Oauth 2.0,Google Api,Google Tasks Api,我正在尝试获取一个具有授权凭据的Google Tasks服务对象,以便我们可以为已经通过Google Apps Marketplace使用我们的Web应用程序注册并登录oAuth2的用户提取任务 不幸的是,我收到了401-授权-登录要求。谁能告诉我哪里出了问题 下面是我的GetTaskService方法的代码: def httpTransport = new NetHttpTransport() def jsonFactory = new JacksonFactory(); def clien

我正在尝试获取一个具有授权凭据的Google Tasks服务对象,以便我们可以为已经通过Google Apps Marketplace使用我们的Web应用程序注册并登录oAuth2的用户提取任务

不幸的是,我收到了401-授权-登录要求。谁能告诉我哪里出了问题

下面是我的GetTaskService方法的代码:

def httpTransport = new NetHttpTransport()
def jsonFactory = new JacksonFactory();

def clientId = GOOGLE_CLIENT_ID
def clientSecret = GOOGLE_SECRET
def applicationName = APPLICATION_NAME

def tokenResponse = (TokenResponse) googleAppsNewOAuthService.getGoogleResponse()
def credential = new GoogleCredential.Builder()
                                     .setJsonFactory(jsonFactory)
                                     .setTransport(httpTransport)
                                     .setClientSecrets(clientId, clientSecret)
                                     .build()
                                     .setFromTokenResponse(tokenResponse)

def service = new com.google.api.services.tasks.Tasks.Builder(httpTransport, jsonFactory, credential)
                                                     .setApplicationName(applicationName)
                                                     .build()
return service
googleAppsNewOAuthService.getGoogleResponse方法的代码:

public JSONElement getGoogleResponse() {
    def session = RequestContextHolder.currentRequestAttributes().getSession()
    Token googleAccessToken = (Token) session[oauthService.findSessionKeyForAccessToken('google')]

    log.info "Google Access Token: ${googleAccessToken.token}"

    if(googleAccessToken == null) {
        return null
    }

    def googleResource = oauthService.getGoogleResource(googleAccessToken, "https://www.googleapis.com/oauth2/v1/userinfo" )
    def googleResponse = JSON.parse(googleResource?.getBody())

    return googleResponse
}
。。。由此产生的GoogleJsonResponseException:

{
  "code" : 401,
  "errors" : [ {
    "domain" : "global",
    "location" : "Authorization",
    "locationType" : "header",
    "message" : "Login Required",
    "reason" : "required"
  } ],
  "message" : "Login Required"
}

at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)