小编Kor*_*eel的帖子

如何在Google Cloud Endpoints Javascript客户端中设置自定义标头?

我可以使用Javascript客户端从Google Cloud Endpoints获取博客帖子列表:

gapi.client.blog.posts.list().execute(function (resp) {
  console.log(resp);
});
Run Code Online (Sandbox Code Playgroud)

但我需要在Google Cloud Endpoints请求中设置包含用户令牌的自定义标头值(这可能是来自Facebook的访问令牌).如何使用Google的Javascript客户端执行此操作?我可以通过不使用谷歌的Javascript客户端解决这个问题,但我宁愿使用它.

https://developers.google.com/appengine/docs/java/endpoints/consume_js https://developers.google.com/api-client-library/javascript/reference/referencedocs

编辑

看来我可以像这样传递自定义标头值:

gapi.auth.setToken({
    access_token: 'this is my custom value'
});
Run Code Online (Sandbox Code Playgroud)

虽然看起来不是很好的做法.有一个更好的方法吗?

javascript google-api google-cloud-endpoints

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

自定义域映射到Google App Engine模块或版本

假设我有一个Google App Engine应用程序,它有几个模块,有几个版本.我可以将自定义域名映射到应用程序特定模块的特定版本吗?

例如:

http://www.example.com应映射到http://module1-dot-app1.appspot.com

dns google-app-engine

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

使用webapp2会话进行Google Cloud Endpoints身份验证

我的Google Cloud Endpoints API的客户端是一个JavaScript(AngularJS)Web应用程序,托管在与Endpoints API本身相同的Google App Engine应用程序上.我的用户使用webapp2会话(数据存储区)进行身份验证.他们不一定拥有Google帐户.我希望能够向Endpoints API发出请求,这样/api/users/me会返回当前登录用户的用户数据.

首先,我认为我必须为我的App Engine应用程序实现OAuth2提供程序,然后让AngularJS应用程序从我自己的App Engine OAuth提供程序(而不是Google的OAuth提供程序)请求OAuth2访问令牌,就像内置的身份验证机制一样).

但是,此评论建议不要实现我自己的OAuth2提供程序,而是在我的请求中(在消息字段中或在HTTP标头中)向Endpoints API提供任意参数.我猜这个参数应该是一个用户令牌(登录用户特有的一些加密值?).然后应将该值传递给浏览器.那不安全吗?如果可能,我不想在HTTPS上提供我的AngularJS应用程序(以节省成本).

这是OAuth2的一个很好的用例吗?或者OAuth2仅用于授予第三方应用程序访问用户数据的权限?

如果OAuth2不是这样的话:如何将用户令牌安全地传递给浏览器并防止中间人攻击?用户令牌是否应在一定时间后过期?

python google-app-engine oauth-2.0 webapp2 google-cloud-endpoints

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

如何计算类似于YouTube的短固定长度混淆ID(例如2WNrx2jq184)

我的数据库中的每个用户对象都有一个增量ID(1,2,3,...).查看用户配置文件的URL包含用户对象的ID; 例如http://www.example.com/users/1.这样每个人都可以看到网站上有多少用户,用户群增长的速度等等.我不想提供这些信息.

我想将增量ID转换为Base58格式的固定长度字符串,因此URL看起来像http://www.example.com/users/2WNrx2jq184此外,我需要将字符串转换回的字符串的反向函数原始身份证.反向功能不应该易于逆向工程.

我为此找到的最好的Python代码是https://github.com/JordanReiter/django-id-obfuscator.这是非常好的,但在某些情况下,它会添加一个0和/或.字符,这会导致字符串不在Base58中而不是固定长度.(参见utils.py第24和29行)

如何改进django-id-obfuscator以产生固定长度的base58混淆ID,或者如何在Python中创建这样的混淆ID?

python encryption google-app-engine encoding

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

Google App Engine开发服务器中的PyCrypto"ImportError:无法导入名称blockalgo"

我有一个使用PyCrypto用AES加密字符串的函数.当我在单元测试中调用该函数时,一切正常.在生产环境中,它也可以正常工作.但是,在GAE开发服务器上调用该函数时,会引发错误:"ImportError:无法导入名称blockalgo".我在Windows 7(64位)和Mac OS 10.5上测试过它.两者都导致了同样的错误.我正在使用带有Python 2.7的Google App Engine.可能是什么问题呢?

的app.yaml

application: xxx
version: 6
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: django
  version: "1.2"
- name: webapp2
  version: "2.3"
- name: jinja2
  version: "2.6"
- name: pycrypto
  version: "2.3"
- name: PIL
  version: "1.1.7"

builtins:
- appstats: on
- remote_api: on

inbound_services:
- mail
- warmup
Run Code Online (Sandbox Code Playgroud)

加密功能:

def encrypt(plaintext):
    from Crypto.Cipher import AES
    import hashlib

    password = 'xxx'
    key = hashlib.sha256(password).digest()

    mode = AES.MODE_ECB
    encryptor = AES.new(key, mode)

    BLOCK_SIZE = …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine jinja2 pycrypto

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

无需使用 Google 帐户登录即可使用 Google Picker(使用 OAuth)

是否可以向未使用 Google 帐户登录的用户展示Google Picker ?我想让用户从我网站的 Google 帐户的共享 Google 云端硬盘中选择文件。我可以在服务器上使用 OAuth 访问这些文件。但是否也可以使用 Google Picker 来呈现文件?也许用这个方法:

PickerBuilder.setOAuthToken(string)
Run Code Online (Sandbox Code Playgroud)

设置用于验证当前用户身份的 OAuth 令牌。根据令牌的范围,只有某些视图才会显示数据。有效范围是 Google 文档、云端硬盘和照片。当用户通过 OAuth 进行身份验证时,应使用此方法而不是 .setAuthUser。

Google 选择器 API 参考

我已经尝试过这个,但我认为这是不可能的。或者是吗?

javascript oauth oauth-2.0 google-oauth google-picker

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

使用PyCharm中的模块运行App Engine开发服务器

自最新发布的Google App Engine Python SDK以来,可以使用模块.我有一个带有默认模块和另一个模块的Python应用程序.要在开发服务器中启动模块,开发服务器必须像这样运行:

dev_appserver.py app.yaml othermodule.yaml
Run Code Online (Sandbox Code Playgroud)

当我app.yaml othermodule.yaml在PyCharm的运行/调试配置中添加"附加选项"然后运行开发服务器时,我收到以下错误消息:

google.appengine.tools.devappserver2.errors.InvalidAppConfigError:"." 是一个目录,需要一个yaml配置文件

这是因为PyCharm在命令末尾添加了一个点来运行开发服务器,如下所示:

dev_appserver.py app.yaml othermodule.yaml .
Run Code Online (Sandbox Code Playgroud)

是否可以删除点,或者我必须等到在PyCharm中修复它?在有模块之前,没有必要这样做.

python google-app-engine pycharm

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