我面临着一个似乎无法解决的问题,尽管我已经尝试了一切。
我使用 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”
耶...
我看了一下,并应用了以下问题的答案,但没有任何运气:
有人知道我为什么会遇到这个问题吗?
好吧,我找到了解决方案,这真的很恶毒!
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
,仅此而已!
现在可以了!
我遇到了太多这个范围的时间错误,它给了我无效的 oAuth
当我尝试将 uri 中的每个范围一一添加时,但您不需要这样做。
所以我改变了我的 ủri 范围 我把范围=完整&刷新令牌
因此您将获得您的refresh_token和所有必要的东西,并且不会收到任何无效的OAuth消息