标签: google-cloud-endpoints

片上无效的内存地址或无指针取消引用

为什么invalid memory address or nil pointer dereference跑步时问候给我?

type Response struct {
  Message string `json:"message"`
}

type ResponseList struct {
  Items []*Response `json:"items"`
}

func (gs *GreetingService) List(r *http.Request, req *Request, resp *ResponseList) error {
  greets := make([]*Response,2,2)
  greets[0].Message="hello"
  greets[1].Message="goodbye"
  resp.Items = greets
  return nil
}
Run Code Online (Sandbox Code Playgroud)

google-app-engine go google-cloud-endpoints

1
推荐指数
1
解决办法
679
查看次数

gapi.auth.authorize 立即生效:true 不起作用

我正在尝试使用 Gmail Oauth。

当我用immediate:true调用这个函数时,它仍然在授权时显示弹出窗口。

请让我知道是否存在任何错误,以及任何替代方法。

gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, callbackAuthResult);
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

function signin(getAuthStatus) {

gapi.auth.authorize({
        'client_id': 'myID',
        scope: 'email', immediate: true
    },getAuthStatus);

}

function getAuthStatus() {
        gapi.client.Myendpoint.MyEndpointMethod().execute(function (resp) {
            console.log(resp);
}
Run Code Online (Sandbox Code Playgroud)

javascript oauth-2.0 google-cloud-endpoints google-oauth google-api-js-client

1
推荐指数
1
解决办法
2883
查看次数

部署包含“文件”类型参数的端点时出错

我正在尝试部署一个包含类型参数的file简单端点。

我将gcloud service-management deploy命令与以下符合 openapi 的 yaml 一起使用:

swagger: "2.0"

info:
  description: "Image API"
  title: "Image API"
  version: "v1"

host: "image-api.endpoints.myproject.cloud.goog"
basePath: "/v1"

schemes:
- "https"

paths:
  "/images":
    post:
      description: "Adds an image"
      operationId: "add"
      consumes:
      - "multipart/form-data"      
      produces:
      - "application/json"
      responses:
        201:
          description: "An image create response"
          schema:
            $ref: "#/definitions/ImageResponse"
      parameters:
      - name: filepath
        in: formData
        required: true
        type: string
      - name: image
        in: formData
        required: false
        type: file

definitions:
  ImageResponse:
    type: object
    properties: …
Run Code Online (Sandbox Code Playgroud)

google-cloud-endpoints gcloud openapi google-cloud-endpoints-v2

1
推荐指数
1
解决办法
1184
查看次数

GCP 端点:调用方在查询中请求 API 密钥后没有权限

尝试将 Google Cloud 平台与部署了 GKE 的后端一起使用。

我有一个用于端点的 swagger 文件,在不使用安全性时可以正常工作。

我在 swagger 文件中添加了 api 密钥定义:

paths:
  /create:
    post:
      ...
      security:
        - api_key: []
      
securityDefinitions:
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"
Run Code Online (Sandbox Code Playgroud)

现在如果我尝试发帖,我会得到预期的结果

{
    "code": 16,
    "message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
    "details": [
        {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "stackEntries": [],
            "detail": "service_control"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

好的,现在我在 GCP 的凭据部分创建了一个 API 密钥 在此处输入图片说明

我更新帖子请求以包含?key=API_KEY并收到以下错误:

{ …
Run Code Online (Sandbox Code Playgroud)

permissions api-key google-cloud-endpoints google-cloud-platform

1
推荐指数
1
解决办法
589
查看次数

如果ClassnameEndpoint.java具有'具有相同休息路径的多个方法"GET classname":etc,则生成客户端库失败

在从模型类生成Endpoint之后,我编辑ClassnameEndpoint文件以生成一个方法,该方法将使用修改后的SELECT字符串返回实体列表.

不知何故,这会导致冲突和生成客户端库失败,如下所示:

信息:已成功处理C:\ Users\1177\AndroidStudioProjects\N5\appN5-AppEngine\target/generated-sources/appengine-endpoints\WEB-INF/appengine-web.xml [ERROR] com.google.api.server.spi .config.validation.ApiConfigInvalidException:具有相同休息路径的多个方法"GET eventdata":"listUserEventData"和"listEventData"

这是ClassnameEndpoint.java,它在生成后手动编辑:

注意listEventData和listUserEventData是相同的,但SELECT字符串除外...

那么如何创建一个端点方法来获取所有实体,另一种方法来获取没有冲突的SOME实体?

package sic.example.appn5;

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;
import com.google.api.server.spi.response.CollectionResponse;
import com.google.appengine.api.datastore.Cursor;
import com.google.appengine.datanucleus.query.JPACursorHelper;

import java.util.List;

import javax.annotation.Nullable;
import javax.inject.Named;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityNotFoundException;
import javax.persistence.EntityManager;
import javax.persistence.Query;

@Api(name = "eventdataendpoint", namespace = @ApiNamespace(ownerDomain = "example.sic", ownerName = "example.sic", packagePath = "appn5"))
public class EventDataEndpoint {

    /**
     * This method lists all the entities inserted in datastore.
     * It uses HTTP GET method and paging support.
     *
     * @return …
Run Code Online (Sandbox Code Playgroud)

rest google-app-engine google-cloud-endpoints android-studio

0
推荐指数
1
解决办法
1623
查看次数

客观化复合过滤器实现或黑客攻击

似乎Objectify不支持数据存储区CompositeFilter.但客观化确实需要Filter.那么现在我如何AND在客体化中实现复合滤波器?我正在从Datanucleus转移,我需要查询

"SELECT f.healthy FROM Food f WHERE  f.fan = :userid AND flavor = : flavor";
Run Code Online (Sandbox Code Playgroud)

所以类型是Food.class和字段是fanflavor

google-app-engine objectify google-cloud-endpoints google-cloud-datastore

0
推荐指数
1
解决办法
587
查看次数

IntegerField()在JSON中转换为任何数字的字符串

这个问题很相似,这其中,只有更差......在我的测试,因此即使是很小的整数1转换为字符串.这是我的MWE:

app.yaml

application: your-app-id
version: 1
runtime: python27
threadsafe: true
api_version: 1

handlers:
- url: /_ah/spi/.*
  script: example.app
  secure: always

libraries:
- name: endpoints
  version: 1.0
Run Code Online (Sandbox Code Playgroud)

example.py

import endpoints
from protorpc import messages
from protorpc import message_types
from protorpc import remote

package = 'Example'

class Number(messages.Message):
    number = messages.IntegerField(1)

@endpoints.api(name='example', version='v1')
class ExampleApi(remote.Service):
    @endpoints.method(message_types.VoidMessage, Number,
            path = "getNumber", http_method='GET', name = 'getNumber')
    def get_number(self, _):
        return Number(number = 3)  # This is a small integer. Isn't? …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine json google-cloud-endpoints

0
推荐指数
1
解决办法
490
查看次数

我们是否必须生成并使用客户端库来使用Google App Engine的端点?

我目前正在为RESTful API开发一个带有GAE端点的Swift iOS应用程序.如果您需要在客户端使用API​​,似乎所有教程和文档都会使您生成并使用客户端库.我想知道我是否可以通过使用普通网址请求或Alamofire来使用API​​并以JSON格式获得结果?

rest google-app-engine ios google-cloud-endpoints swift

0
推荐指数
1
解决办法
431
查看次数

如何使用 Google Cloud Endpoints 返回文件?

我有一种方法可以生成带有一些数据库记录的 CSV 文件

    public static void generateCsvForAttendees( List<Attendee> attendeeList ) throws FileNotFoundException
    {
        PrintWriter pw = new PrintWriter(new File("test.csv"));

        StringBuilder sb = new StringBuilder();

        //Header
        sb.append( "Id" );
        sb.append( ',' );
        sb.append( "Name" );
        sb.append( ',' );
        sb.append( "Lastname" );
        sb.append('\n');

        //Content
        for( Attendee attendee: attendeeList )
        {
            sb.append( attendee.getId() );
            sb.append( ',' );
            sb.append( attendee.getUser().getName() );
            sb.append( ',' );
            sb.append( attendee.getUser().getLastname() );
            sb.append( '\n' );

        }

        pw.write(sb.toString());
        pw.close();
    }
Run Code Online (Sandbox Code Playgroud)

我希望该方法是一个端点,以便从任何类型的客户端(网络或移动设备)调用它来下载它。在Google Cloud Endpoint 文档中,没有关于 File 作为有效返回类型的内容。我如何创建和端点返回文件?

java google-app-engine google-cloud-endpoints google-cloud-platform

0
推荐指数
1
解决办法
1244
查看次数

Cloud Endpoints + Firebase Admin SDK:通过FirebaseUser令牌对用户进行身份验证

我使用谷歌云端点(版本1,使用android studio)为我的Android应用程序构建了一个移动后端.我希望通过电子邮件/密码验证我的用户,因此我使用Firebase身份验证来执行此操作.Firebase身份验证sdk允许我在客户端(在android中)获取每个用户的令牌,而firebase管理员sdk允许我检查后端令牌的有效性.我了解在云端点我可以提供自己的自定义身份验证器(请参阅:Google Cloud端点和用户身份验证),我计划在我的自定义身份验证器中调用firebase admin sdk来验证用户的呈现令牌.

我的问题是,因为我使用谷歌云端点来构建我的后端,我不知道在我可以验证任何令牌之前,在哪里插入代码来执行firebase管理对象的初始化.在常规应用程序引擎环境中,您将在HTTPServlet的init()方法中执行此初始化(请参阅https://github.com/GoogleCloudPlatform/firebase-appengine-backend/blob/master/src/main/java/com /google/cloud/solutions/flexenv/backend/MessageProcessorServlet.java),但云端点通过自动提供"SystemServiceServlet"作为HTTPServlet来隐藏此信息.我已经尝试了继承SystemServiceServlet并重写init()方法,但是然后将端点部署到app引擎失败了,因为显然,创建android客户端库要求必须使用SystemServiceServlet(并且必须将其命名为"SystemServiceServlet") ").

我可以在云端点提供的每个api方法中初始化firebase管理应用程序(例如,在我的api的insert方法中),但这看起来效率极低.如何在使用谷歌云端点构建的后端中使用Firebase管理员sdk?

非常感谢你花时间陪伴

google-app-engine android google-cloud-endpoints firebase-authentication firebase-admin

0
推荐指数
1
解决办法
427
查看次数

Google App引擎端点版本从V1迁移到V2

我们使用android studio创建了Google Endpoint api v1。我们已收到来自Google Cloud的电子邮件,该电子邮件已弃用Google Api v1版本。因此,我们尝试将v1更新为v2。因此,请参考以下链接进行迁移。https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating-android#before_you_begin

更改后,当我们尝试运行该时间时,显示'... / backend / build / exploded-app'不存在

如果查看项目中的目录树,则可以看到基于模块名称“ backend”和包含Discovery文档的“ endpointsDiscoveryDocs”的分解目录“ ../build/exploded-backend”。

不可用' ... / backend / build / exploded-app '和' ... / backend / build / endpointsClientLibs '

当我尝试执行时,构建成功,但显示在运行后端错误:无法启动进程,工作目录'... \ MyAppliaiton \ backend \ build \ exploded-app'不存在

我的Android项目中使用了以下build.xml

MyApplication build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {

        classpath 'com.google.guava:guava:19.0'
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

应用程式build.gradle

**apply plugin: …
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-endpoints

0
推荐指数
1
解决办法
373
查看次数