小编bos*_*ter的帖子

Google OAuth2命令行示例

谷歌在这里有一个OAuth2客户端的例子

我完全是OAuth2的新手,我希望在我将OAuth2与我的应用程序集成之前让这个示例正常工作.我所做的是以下内容:

  1. 注册测试应用程序
  2. 获取客户端ID和客户端密钥
  3. 将这些值配置到client_secrets.json中
  4. 运行测试应用程序: python moderator.py

该应用程序打开一个浏览器,我可以(作为用户)授权应用程序访问我的帐户.但谷歌这样抱怨(400 Bad Request):

Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:8080/ did not match a registered redirect URI
Learn more
Request Details
from_login=1
scope=https://www.googleapis.com/auth/moderator
response_type=code
access_type=offline
redirect_uri=http://localhost:8080/
approval_prompt=auto
as=-xxxxxxxxxxxxx
pli=1
client_id=xxxxxxxxxxx.apps.googleusercontent.com
authuser=0
hl=en
Run Code Online (Sandbox Code Playgroud)

我想localhost:8080来自一个由moderator.py启动的内部Web服务器.我的问题是:有人得到这个例子吗?我需要哪些其他组件(apache配置,DNS,...)

我对OAuth2非常困惑,任何帮助将不胜感激.

python google-api oauth-2.0 google-api-python-client

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

Google Calendar API - 通过服务帐户访问自己的日历

我想访问Google Calendar API以使用Python插入条目.我在Google API控制台上创建了一个服务帐户,添加了一个私钥,然后将其下载.

但是,当我尝试修改任何日历时,它在同一个帐户上,我收到以下错误消息.阅读作品.

代码是

import httplib2

from oauth2client.client import SignedJwtAssertionCredentials 
from apiclient.discovery import build

event = {
         'summary' : 'Appointment',
         'location' : 'Somewhere',
         'start' : {
                    'dateTime' : '2012-09-03T10:00:00.000-07:00'
                    },
         'end' :    {
                 'dateTime' : '2012-09-03T10:25:00.000-07:00'
                    }
}


f = file("key.p12", "rb")
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
                                                service_account_name='423291807109-XXXXXXXXXXXXXXXXxx@developer.gserviceaccount.com',
                                                private_key=key,

                                                scope='https://www.googleapis.com/auth/calendar'                                            
                                            )

http = httplib2.Http()
http = credentials.authorize(http)

service = build('calendar', 'v3', http=http)
request = service.events().insert(calendarId='XXXXXXXXXXXXXXXXXX@group.calendar.google.com', body=event)

response = request.execute()

print(response)
Run Code Online (Sandbox Code Playgroud)

错误信息是:

apiclient.errors.HttpError: <HttpError 403 …
Run Code Online (Sandbox Code Playgroud)

python authentication api calendar google-api-python-client

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

存储来自Google OAuth 2.0的访问令牌,以便从应用程序帐户访问驱动器数据

我可以 使用python为Google Drive 执行quickstart.py.但是我们如何存储令牌并再次使用它 - 再次针对同一用户而不提示用户.他们可以通过某种方式在Google驱动器上发送文件请求时使用访问令牌映射用户.

google-drive-api google-api-python-client

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

如何使用json凭证文件对gcloud大查询进行身份验证?

谷歌bigquerygcloud文档中,它声明可以从from_service_account_json确定身份验证.

我尝试了以下内容

from gcloud import bigquery
client = bigquery.Client.from_service_account_json('/Library/gcloud_api_credentials.json')
Run Code Online (Sandbox Code Playgroud)

json文件如下所示(注意:加扰的凭据,所以这些现在是假的).

{"type": "service_account",
"project_id": "example_project",
  "private_key_id": "c7e371776ab6e2dsfafdsaff97edf9377178c8",
  "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXXAgEAAoIBAQDBIAaPzRVOT12J\nfPKzJ/tgVTJWHWiO29C/OpjRbd4WUFNEfX3mdShYoVo9+F7u3QSlCxA4SgZmro0s\n/yQKyhCrpcmrmWJyr5VqqIvqScJVJzBvLHCto/JoydCSzYQJz89vltZ11NZE1n+W\ncvF2ygX9oM/dyUK/1eVsJOIoj4qj2jpRuQhxgh0ag2HVYlmAfnP9wfTdLeoV0e/z\n0WtBNesCrekh/ooldbxcDa6KvLJpBKu6BJg0nYWtnB0Q2hEZl1msNDs9lsMIWI/4\nRwz4iEv67HDTDaTerF89sFsPW5dyybnspxuNXlNSjtdABpHTU4mm1bwgRSEomuyZ\nptMp+Ck/AgMBAAECggEAYXyDE2/Yw3D4rIBwGtOh5tzazfGGaCa51u4DWiR1qRnf\nDoGyXfTh6ut4HDQV58mVoKJXC7MCTC7sgLxCO1gI1jyX8pE4yt+rMu3lwtx8xnND\n1bq/HkfWA+Nr787iSfmmopOnqk9H4fPM7+sRzH7qSz8z7qa7lQ6qAs8TgpoCx/Zt\nQsfAUDBFHP2x2msngZVkW2rZiCJyiWDE62KI7uxlUXlnqkC9j6vXL+n/SBmVGYSn\n2crQ0CONdBXvk753E4e3AhhA7VUcQorhEnYGFcsI2L9s1mK2SOGnakAukyZpoqQG\n//UmCX/lSu4SpfKi+NFedtQLfZqpfU6tOhS90OzYwQKBgQD1v1FdJ05X92RzRlSb\nQUUqWNKC3OwSlFAEZnBrpY8xSlK8alLXQRQWhBjdugtnfRfvPokILoxtZcgC6rUY\ntyauXPdDbv8+U4+YtcRSf3ZqNQmIajwt/pS/aj9CpY+ZL62codVmXOnpjiaIEZLk\nECJC947oYpxBb6k5OIrecZHuzwKBgQDJLq5H4i3JNpmIHiC/xgDcL9ROrPJBZhaS\fdafsdafddsffdsf/+\nCzA/tpS/dn0i5bf4E/SFWJdFHXk/rIooEGypFNw9e2Sw5rElI3B9DYKkXpHWDLvS\ne0vHm7s6kQKBgQDAH0ZY8XXKR9r8VCupBSoxpSdOr7DQBatZBU02m0SLYHO2YdlJ\n99Lgl31pOx3XVnDz1YwEHYAjtsLbpOrX27gd8QhOa+SYsXM+DDzj0kqdVcGSKJvL\nyZA45bN3Q0A0npW4Mr1HPbSRp1RwZGzWZ9ahTDEpdI58ifNejNnkdh2E+QKBgQCQ\nkSDfuuJX8wpEzBGQfUJk92HC33h+ElQp8MOyl+2qrzTt5KQIkJ+7gbG1F2lQ/Qhc\nqaIDTPTozJds1YfpLARc/fdsfddfd/ovcaSayzV8dEGeXDKU7GrVds5\niwPqRHk3HRJwJHYrT9onoqu8XdDCVggp6ju8RmY2YQKBgQC+r2aGJTOE5BNEwoZa\nT5q5lda+ADFm9JQj9zcF6OI4UFQqJaW0KVlPdr2pH5h6PoRtyVsZ5ZbDSjbZ2+Jp\nT1fW54HoK2S+faXWEmHPIYbRGSSDRJ/Kphu28D4C8Jo8YJKn4rwd8dnWmYC/73cx\naqUiJ7TdFLUYNwl/tg/XGR3PTQ==\n-----END PRIVATE KEY-----\n",
  "client_email": "example_project@appspot.gserviceaccount.com",
  "client_id": "123422110336236066294",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-project%40appspot.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 2217, in <module>
    globals = debugger.run(setup['file'], None, None)
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1643, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Shippy/API/google_big_query_api.py", line 69, in <module>
    try2()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Shippy/API/google_big_query_api.py", line 62, …
Run Code Online (Sandbox Code Playgroud)

python authentication json google-bigquery google-cloud-python

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

在KEY列表中使用__key__进行GQL查询

GQL参考中,鼓励将IN关键字与值列表一起使用,并从GQL查询中手动构造Key

SELECT * FROM MyModel WHERE __key__ = KEY('MyModel', 'my_model_key')
Run Code Online (Sandbox Code Playgroud)

将会成功.但是,使用您期望的代码:

SELECT * FROM MyModel WHERE __key__ IN (KEY('MyModel', 'my_model_key1'),
                                        KEY('MyModel', 'my_model_key2'))
Run Code Online (Sandbox Code Playgroud)

在数据存储查看器中,存在"无效的GQL查询字符串"的投诉.

格式化此类查询的正确方法是什么?

更新:这不适用于当前的SDK.正如我在评论中指出的,当使用列表时,只有引用(例如:1:email)或int,float,string,boolean或null literal是可接受的列表条目.

第二个更新:我修复了错误,现在可以执行此类查询.可以在Google Code Hosting diff中找到修复程序 .

PS我知道在Python中有更有效的方法(没有构建GQL查询)和使用remote_api,但每次调用remote_api都会计入配额.在配额不是(必然)免费的环境中,快速和脏的查询非常有用.

google-app-engine gql

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

Drive API请求中未列出任何Google云端硬盘文件

我正在尝试使用桌面应用获取Google云端硬盘中的文件列表.代码如下:

def main(argv):

    storage = Storage('drive.dat')
    credentials = storage.get()

    if credentials is None or credentials.invalid:
        credentials = run(FLOW, storage)

    # Create an httplib2.Http object to handle our HTTP requests and authorize it
    # with our good Credentials.
    http = httplib2.Http()
    http = credentials.authorize(http)

    service = build("drive", "v2", http=http)
    retrieve_all_files(service)
Run Code Online (Sandbox Code Playgroud)

然后在retrieve_all_files中,我打印文件:

param = {}
if page_token:
    param['pageToken'] = page_token
    files = service.files().list(**param).execute()
    print files
Run Code Online (Sandbox Code Playgroud)

但在我对我的帐户进行身份验证后,打印的文件列表中没有任何项目.有没有人有类似的问题或知道解决方案?

python google-drive-api google-api-python-client

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

谷歌Api Auth Http模块错误

我正在制作我的第一个应用程序,使用Google Api for Calendar.我在以下网址阅读了Google示例:https://developers.google.com/google-apps/calendar/instantiate

我第一次运行下面的程序是成功的.我允许我的应用访问我的Google帐户,应用程序在我的app-directory中创建了一个带有auth信息的calendar.dat文件.在我重命名该文件后,代码在auth停止工作.我已经完全删除了文件并从头开始重新创建,但错误仍然存​​在.

我仍然可以获得Google身份验证页面,但仍然可以确认访问权限,之后我收到一条消息,说明身份验证流程已完成.

这是代码(我用我的应用详细信息填写的标准Google示例):

import gflags
import httplib2

from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.tools import run

FLAGS = gflags.FLAGS

# Set up a Flow object to be used if we need to authenticate. This
# sample uses OAuth 2.0, and we set up the OAuth2WebServerFlow with
# the information it needs to authenticate. Note that it is called
# the Web Server Flow, but …
Run Code Online (Sandbox Code Playgroud)

python google-calendar-api google-api google-api-python-client

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

如何通过 Python 以编程方式使用 gcloud 命令

Google 文档在这个主题上有点通用,我发现很难绕过他们使用的不同 API 和术语,所以我想知道是否有人可以给我指出正确的方向。

我正在寻找一种gcloud直接从 Python 调用命令的方法。我已经安装gcloud在我的 Python 环境中,作为一个示例,我想知道如何从 Python 执行以下操作:

gcloud compute copy-files [Source directory or file name] [destination directory of file name]
Run Code Online (Sandbox Code Playgroud)

python google-compute-engine gcloud gcloud-python google-cloud-python

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

使用gcloud-python在Google云端存储中设置元数据

我正在尝试使用文件上传文件到Google云端存储gcloud-python并设置一些自定义元数据属性.为了尝试这个,我创建了一个简单的脚本.

import os

from gcloud import storage

client = storage.Client('super secret app id')
bucket = client.get_bucket('super secret bucket name')

blob = bucket.get_blob('kirby.png')
blob.metadata = blob.metadata or {}
blob.metadata['Color'] = 'Pink'
with open(os.path.expanduser('~/Pictures/kirby.png'), 'rb') as img_data:        
    blob.upload_from_file(img_data)
Run Code Online (Sandbox Code Playgroud)

我可以上传文件内容.上传文件后,我可以从开发者控制台手动设置元数据并检索它.

我无法弄清楚如何以编程方式上传元数据.

python google-cloud-storage gcloud-python google-cloud-python

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

python中的Google Cloud Datastore超时错误

我在Google Cloud Datastore中有一个表,我在其中存储一个小数据结构,该结构用一个Python服务编写,另一个用另一个Python服务读取.我正在使用gcloud版本0.15.0.这是我用来向GCD写入/读取数据的Python代码:

from gcloud import datastore
import datetime
import json
class GCD(object):
def __init__(self, project_id):
    self.client = datastore.Client(project_id)

def put(self, table, key, data):
    with self.client.transaction():
        entity = datastore.Entity(self.client.key(table, key), exclude_from_indexes=['context'])
        entity.update({'context': json.dumps(data), 'created': datetime.datetime.utcnow(), 'done': True})
        try:
            self.client.put(entity)
        except Exception as e:
            print "GCD save failed with exception: %s" % e
    return None

def get(self, table, key):
    entity_key = self.client.key(table, key)
    entity = None
    try:
        entity = self.client.get(entity_key)
    except Exception as e:
        print "GCD read failed with exception: %s" …
Run Code Online (Sandbox Code Playgroud)

python google-cloud-datastore gcloud-python google-app-engine-python google-cloud-python

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