Stackoveflow成员您好
我正在使用Oauth进行googleplus用户认证,同时我需要获取用户配置文件、图片和驱动器信息。最好的方法是使用Oauth。所以我使用flask_googlelogin。在
我想用示例.py但是我发现这个API运行得很好,我的应用程序页面上出现了信息和Cancel和Accept按钮。但是当我按下accept按钮,我得到了烧瓶错误
TypeError:“instancemethod”对象没有属性“getitem”
现在请看一下示例.py代码和烧瓶_googlelogin.py代码
这里
import json
from flask import Flask, url_for, redirect, session
from flask_login import (UserMixin, login_required, login_user, logout_user,
current_user)
from flask_googlelogin import GoogleLogin
users = {}
app = Flask(__name__)
app.config.update(
SECRET_KEY='<secret_key>',
GOOGLE_LOGIN_CLIENT_ID='<client_id>',
GOOGLE_LOGIN_CLIENT_SECRET='<client_secret>',
GOOGLE_LOGIN_REDIRECT_URI='<redirection_url>')
googlelogin = GoogleLogin(app)
class User(UserMixin):
def __init__(self, userinfo):
self.id = userinfo['id']
self.name = userinfo['name']
self.picture = userinfo.get('picture')
@googlelogin.user_loader
def get_user(userid):
return users.get(userid)
@app.route('/')
def index():
return """
<p><a href="%s">Login</p>
<p><a href="%s">Login with extra params</p>
<p><a href="%s">Login with extra scope</p>
""" % (
googlelogin.login_url(approval_prompt='force'),
googlelogin.login_url(approval_prompt='force',
params=dict(extra='large-fries')),
googlelogin.login_url(
approval_prompt='force',
scopes=['https://www.googleapis.com/auth/drive'],
access_type='offline',
),
)
@app.route('/profile')
@login_required
def profile():
return """
<p>Hello, %s</p>
<p><img src="%s" width="100" height="100"></p>
<p>Token: %r</p>
<p>Extra: %r</p>
<p><a href="/logout">Logout</a></p>
""" % (current_user.name, current_user.picture, session.get('token'),
session.get('extra'))
@app.route('/oauth2callback')
@googlelogin.oauth2callback
def login(token, userinfo, **params):
user = users[userinfo['id']] = User(userinfo)
login_user(user)
session['token'] = json.dumps(token)
session['extra'] = params.get('extra')
return redirect(params.get('next', url_for('.profile')))
@app.route('/logout')
def logout():
logout_user()
session.clear()
return """
<p>Logged out</p>
<p><a href="/">Return to /</a></p>
"""
app.run(debug=True)
还有烧瓶_googlelogin.py代码在这里
^{pr2}$请记下def oauth2callback中可能有一些受干扰的代码,以及如果代码行是 用户信息=self.get_用户信息(令牌['access_token'])
这里token['access_token']产生错误名称“TypeError:'instancemethod'object没有属性'getitem'”
请告诉我怎样才能修好它
看起来像是错误或api更改。在
交换密码
token现在是json函数。在更新版本的flask_googlelogin中,这是json()。在
相关问题 更多 >
编程相关推荐