我在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/

10-09 16:45