我正在使用Python中的Google Cloud Backends Project支持Android应用。我希望服务器能够在用户的帐户上进行一些API调用 (比如联系人,地图等)而不是让Android客户端承担这个开销。 我根本不使用Webapp 。我不愿意 - 我不认为有必要,除非这是使这项工作的唯一方法。
想知道我将如何前进:
@endpoints.api(name='data_api',
version='v1',
description='Access, create or delete data for meetups.',
audiences=client_ids.allowed_client_ids,
scopes=[ # Get email and Details
endpoints.EMAIL_SCOPE,
# Get Contacts
client_ids.CONTACTS_SCOPE
])
class DataApi(remote.Service):
@UserModel.method(name='user.fetch',
user_required=True)
def get_all_contacts(self, query):
#Now what?
我想我需要将Auth令牌转发到服务器到Google API的另一个自定义请求,但我不知道如何提取它并推进它。无法在文档或此处的任何问题中找到它。
感谢您的帮助。
编辑: 我确实知道如何检查用户是否经过身份验证,但这并不能告诉我如何使用相同的身份验证令牌来启动Google API。
if endpoints.get_current_user() is not None:
#Do secret authenticated business...
答案 0 :(得分:1)
OAuth2流程的最后一步,检索到的令牌位于API请求标头中。我们可以这样访问它:
import os
self.bearer = os.getenv('HTTP_AUTHORIZATION')
这提供了可以中继到其他API的承载字符串。使用正确的范围,当使用atom和gdata Python库完成时,我们需要在这里找到一个新对象:https://github.com/ca9/meetup-backend/blob/master/atom/auth.py
在EndpointsAuth类中。
与gdata一起使用如下:
if e_user:
gd_client = gdata.contacts.client.ContactsClient(source='<var>intense-terra-821</var>', auth_token=EndpointsAuth())
在任何端点函数下。