当前位置: 首页 > 知识库问答 >
问题:

在Python中使用google API和OAUTH2获取用户信息时出错

陈畅
2023-03-14
def analyze():
 credentials = getCredentials() 
 drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
 theFiles = drive_service.files().list(pageSize=1000,q="trashed=false", fields="files(id,name,modifiedTime, size)").execute() #THIS WORKS
oauth2_client = googleapiclient.discovery.build('oauth2','v2',credentials=credentials)
 user_info= oauth2_client.userinfo().get().execute() #THIS FAILS
givenName = user_info['given_name']
def getCredentials():
 *Loads credentials from the session.*
 sc = session['credentials'] 
 credentials = google.oauth2.credentials.Credentials(token=sc.get('token'),
 client_id=sc.get('client_id'),
 refresh_token=sc.get('refresh_token'),
 token_uri=sc.get('token_uri'),
 client_secret=sc.get('client_secret'),
 scopes=sc.get('scopes'))
@app.route('/OAcallback')
def OAcallback():
   flow =google_auth_oauthlib.flow.Flow.from_client_secrets_file('client_id.json', scopes=['https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile'])
  flow.redirect_uri = return_uri
  authorization_response = request.url
  flow.fetch_token(authorization_response=authorization_response)
  credentials = flow.credentials 
  * Store the credentials in the session.*
  credentials_to_dict(credentials)

共有1个答案

皇甫波峻
2023-03-14
scopes=['https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile']
scopes=['https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile' 'email']
 类似资料:
  • 我正在一个项目,其中有要求的Gmail认证,也可以扩展。我在这里遵循这个教程,其中有关于Facebook和GitHub身份验证的示例。所以我尝试了Gmail,我得到了这个错误,我无法解决,并得到了新的异常时,试图解决。请帮助我,因为我相信这是代码受我添加的影响最小的地方。有了这么多的配置和代码,它只适用于github和fb,但不适用于Google。 socialapplication.java b

  • 通过该接口可以获取指定用户的账户信息,地址为: http://spark.bokecc.com/api/user 需要传递以下参数: 参数 说明 userid 用户id,不可为空 format 返回格式,xml 或json 返回数据user包含如下字段: 字段名 说明 account 用户账户 version 版本信息 expired 到期时间 space 用户空间信息 traffic 用户流量信

  • 是否可以使用OAuth 2访问令牌从ForgeRock的OpenAM获取用户详细信息(属于资源所有者的属性)? 我有一个受信任的SPA UI,可以使用资源所有者密码凭据授予类型从OpenAM获取访问令牌。然而,该访问令牌没有提供有关资源所有者的信息。类似地,endpoint没有提供任何信息。 OpenAM似乎有用于列出用户属性的endpoint,但是期望使用JWT作为请求的身份验证手段。 如何从访

  • 我正在使用PHP Google API客户端库使用OAuth2从Google帐户检索用户信息。然而,尽管谷歌的文档中指出,我似乎无法访问用户的国家或时区信息,即使令牌成功返回,并且所有其他信息都可以从范围中获得。 我在这里使用了int heir库提供的示例代码,如果我在该文件的第49行上var_dump($user),我将获得以下输出(出于隐私考虑进行编辑): 正如您所见,没有可用的时区或国家信息

  • 我对Twitter API和对OAuth的总体理解存在问题。我可以轻松地请求从我的帐户中提取信息。我遇到的问题是,其他用户可能会使用“使用Twitter登录”。即使我能在他们登录后获得其他用户信息,我也无法在其他网站上单独请求他们的信息。php页面(我不想从MySQL获取信息)。我只能在原件上获得他们的信息一次。在他们登录并加载页面后返回php页面。 我将发布一些代码,但我的主要担忧/问题是——是

  • 问题内容: 我得到的错误: 下面的代码,我正在使用: 直到这里,我得到了刷新令牌,访问令牌等 它在以下行失败:(不知道,为什么?) 我在网上搜索过,但很少看到它的示例和稀有资料。任何机构都有想法吗? 我究竟做错了什么? 问题答案: 我猜 credential.getRequestInitializer() 为空。 我已经通过将自定义请求初始化程序设置为凭证对象来解决了此问题 Google的文档规定