OAuthException:无法使用 Salesforce 生成请求令牌

问题描述 投票:0回答:2

我面临着一个似乎无法解决的问题,尽管我已经尝试了一切。

我使用 Flask + Flask_oauthlib 连接到 SalesForce。这是我的代码:

from flask import Flask, url_for
from flask_oauthlib.client import OAuth

app = Flask(__name__)
oauth = OAuth(app)


salesforce = oauth.remote_app('salesforce',
    consumer_key='my_consumer_key',
    # grant_type='authorization_code',
    consumer_secret='my_consumer_secret',
    request_token_url='https://login.salesforce.com/services/oauth2/token',
    access_token_url='https://login.salesforce.com/services/oauth2/token',
    authorize_url='https://login.salesforce.com/services/oauth2/authorize')

@app.route('/')
def home():
    url = url_for('oauth', _external=True)
    salesforce.authorize(callback=url)
    return 'ok'


@app.route('/oauth')
def oauth():
    resp = salesforce.authorized_response()
    print resp

    return 'ok'


if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

当我运行此程序并转到

/
时,我收到以下异常:

OAuthException:无法生成请求令牌

我添加了引发异常的相关行的输出(“/usr/lib64/python2.7/site-packages/flask_oauthlib/client.py”,第 580 行),这是来自 Salesforce 的响应:

{u'error_description': u'grant type not supported', u'error': u'unsupported_grant_type'}

所以显然我需要将

grant_type
设置为允许的值。

我尝试添加 grant_type,如您在注释部分中看到的那样,但是当我重新启动代码时,它会停止并出现以下错误:

TypeError:init()得到了意外的关键字参数“grant_type”

耶...

我看了一下,并应用了以下问题的答案,但没有任何运气:

有人知道我为什么会遇到这个问题吗?

python oauth salesforce
2个回答
0
投票

好吧,我找到了解决方案,这真的很恶毒!

salesforce = oauth.remote_app('salesforce',
    consumer_key='my_consumer_key',
    consumer_secret='my_consumer_secret',
    access_token_url='https://login.salesforce.com/services/oauth2/token',
    authorize_url='https://login.salesforce.com/services/oauth2/authorize')

没看出区别吗?我必须删除

request_token_url
,仅此而已!

现在可以了!


0
投票

我遇到了太多这个范围的时间错误,它给了我无效的 oAuth

当我尝试将 uri 中的每个范围一一添加时,但您不需要这样做。

所以我改变了我的 ủri 范围 我把范围=完整&刷新令牌

因此您将获得您的refresh_token和所有必要的东西,并且不会收到任何无效的OAuth消息

© www.soinside.com 2019 - 2024. All rights reserved.