小编Ehs*_*ini的帖子

验证服务帐户以使用 JavaScript 客户端库调用 Google API

我想使用适用于 JavaScriptGoogle 客户端库从本地主机(WAMP 环境)到Google FusionTables API(以及一些其他 API)进行JSON-RPC调用

我采取的步骤:

  1. Google Developer Console上设置项目
  2. 启用 FusionTables API
  3. 创建了一个服务帐户并下载了 JSON 文件。
  4. 使用auth包成功加载JS客户端库: gapi.load('client:auth2', initAuth);
  5. 通过以下3种方式构造init方法参数:
    • 逐字下载的 JSON
    • 下载的 JSON 修改为包含范围
    • 只是客户端 ID 和范围
  6. 尝试(但失败)初始化 GoogleAuth 实例: gapi.auth2.init(params)
    功能失败(原因){
        控制台日志(原因);
    }
    gapi.load('client:auth2', initAuth);

    函数 initAuth() {

        var APIkey = '我的 API 密钥';
        gapi.client.setApiKey(APIkey); //我理解这对于授权请求是不必要的,包括只是为了更好的衡量

        var GDTSAKey = '我的服务帐户密钥';
        var scopes = 'https://www.googleapis.com/auth/fusiontables';
        gapi.auth2.init({
            client_id: "101397488004556049686",
            范围:'https://www.googleapis.com/auth/fusiontables'
        }).then(signin, failed("无法启动"));
        //将下载的 JSON 对象逐字作为参数传递给 init 也不起作用
    } //initAuth() …

javascript oauth google-api google-api-js-client

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

std :: vector不保留在实现中实例化的推回对象

我有一个向量和在plane.h中声明的对象:

extern Plane Default;
extern std::vector<Plane *>universe;
Run Code Online (Sandbox Code Playgroud)

它们在plane.cpp中定义:

Plane Default("Default");
std::vector<Plane *>universe;
Run Code Online (Sandbox Code Playgroud)

平面构造函数:

Plane::Plane(const std::string &label) {
    /* check universe to ensure uniqueness */
    std::cout << this << std:endl; //DEBUG CHECK to see what I push_back

    universe.push_back(this); //ACTION to keep track of the planes

    std::cout << universe.back() << std::endl; //DEBUG CHECK to ensure that it was stored correctly
}
Run Code Online (Sandbox Code Playgroud)

输出确认平面确实存储在矢量中.

主要:

if(universe.empty()) cout << "EMPTY UNIVERSE" << endl;
Run Code Online (Sandbox Code Playgroud)

表明向量没有保留该值.我期望Default(在plane.cpp中定义)存储在Universe中.

演示

但是,当我从main实例化平面时,Universe会保留这些值

我想这与本地副本,范围和值传递有关,但我无法找到一种方法来实例化实现中的默认平面,以便其地址保留在向量中.

我也尝试从堆中声明向量,如下所示:

extern std::vector<Plane *> *universe;
Run Code Online (Sandbox Code Playgroud)

并定义如下:

std::vector<Plane *> …
Run Code Online (Sandbox Code Playgroud)

c++ implementation scope vector

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