我在FLASK上并使用QUICKBOOK INTUIT WITH PYTHON集成QUickbook Oauth
def QBConfig():
qbObject = QuickBooks(
consumer_key='qyprdgW*********1vZ5yEnwgNQsO',
consumer_secret='csnHfPP***WDnA*********CIjzfb3MAb4GI',
callback_url='http://0.0.0.0:10080/QBGetAccesstoken',
)
return qbObject
@app.route('/intuitOauth')
def intuitOauth():
qbObject = QBConfig()
authorize_url = qbObject.get_authorize_url()
# will create a service, and further set up the qbObject.
return redirect(authorize_url)
@app.route('/QBGetAccesstoken')
def QBGetAccesstoken():
oauth_verifier = request.args.get('oauth_verifier')
session = qbObject.get_access_tokens(oauth_verifier)
这里的intuitauth函数初始化qbObject,它是包含第三方应用程序密钥配置的对象。
问题是:如何才能全局访问qbObject?
当intuitauth获得成功时,称为(QBGetAccesstoken)的回调URL。
这是我遇到错误“未定义qbobject的部分”。
这些函数不是在类中编写的。调用回调函数时,qbobject对象可能会被破坏。有人可以猜测确切的问题或解决方案,即调用回调函数时如何传递原始对象(调用回调时页面将刷新)。
我什至尝试像
session['qbobj'] = qbObject
一样在会话中存储对象,但不幸的是没有用。我还尝试重新初始化QBGetAccesstoken函数(如
qbObject = QBConfig()
)中的对象,并返回“ None”错误和“ AttributeError:'NoneType'对象没有属性”。 最佳答案
我在全局定义变量时犯了一个愚蠢的错误。它适用于以下代码。
qbObject = QuickBooks(
consumer_key='qyprdgW*********1vZ5yEnwgNQsO',
consumer_secret='csnHfPP***WDnA*********CIjzfb3MAb4GI',
callback_url='http://0.0.0.0:10080/QBGetAccesstoken',
)
@app.route('/intuitOauth')
def intuitOauth():
authorize_url = qbObject.get_authorize_url()
# will create a service, and further set up the qbObject.
return redirect(authorize_url)
@app.route('/QBGetAccesstoken')
def QBGetAccesstoken():
oauth_verifier = request.args.get('oauth_verifier')
session = qbObject.get_access_tokens(oauth_verifier)
在定义过程中,从功能中删除
qbObject
关于python - NameError:全局名称'qbObject'未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30853815/