python 社交认证 twitter 403 其次是 220
python social auth twitter 403 followed by 220
我正在尝试使用 Python 社交从 Android 授权,我正在传递我的令牌格式:
"xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
设置后端="twitter"和"grant_type":"convert_token"
我为 Facebook 所做的同样的工作。
我得到了正确的设置
SOCIAL_AUTH_TWITTER_KEY = os.environ.get('SOCIAL_AUTH_TWITTER_KEY', '')
SOCIAL_AUTH_TWITTER_SECRET = os.environ.get('SOCIAL_AUTH_TWITTER_SECRET', '')
但每当它在方法 class 中到达 Twitter 后端时:user_data 即调用 Twitter API verify_credentials.json 端点。
它因 400 响应而崩溃,后跟:
{
"error": "invalid_request",
"error_description": "Backend responded with HTTP403: {\"errors\":[{\"message\":\"Your credentials do not allow access to this resource\",\"code\":220}]}."
}
我尝试手动重新创建东西,但同样的事情发生了。
我知道 10 月 31 日的 Twitter API 更改,我在 Twitter 的开发人员面板中添加了应用程序和 live/developement 服务器的回调 url。
twittersdk://
http://127.0.0.1:8000/auth/complete/twitter/
为了以防万一,我改了读+写的权限,但是没用
Access permission
Read, write, and direct messages
Additional permissions
Request email address
此外,我已经刷新了两次密钥和秘密,并小心地将它们放在后端和 Android。
2018 年 10 月 31 日之前,同样的设置工作正常,但突然间什么都不管用了。
从Android我打电话:
TwitterCore.getInstance().getSessionManager().getActiveSession
().getAuthToken().token;
检索令牌。
令牌由 Android 使用 https://api.twitter.com/1.1/account/verify_credentials.json
检索
更新
我在 twurl(ruby 应用程序)的帮助下手动测试
twurl authorize -u 'myuser@gmail.com' -p 'mypassword' -c 'xxxxxxxxxxxxxxxxxxxxxxxxx' -s 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -a
然后在 ~/.twurlrc 中有一个 access_token(就像 Android 正在传递)。
但是,GET 请求 verify_credentials.json 需要 token_secret 以及我调试的 属性 我没有从 [=73= 传递 convert_token ]
显示成功的图像:
问题:
我是否需要扩展 Twitter 后端并传递 token_secret 参数以及如何传递?
解决方案
https://github.com/RealmTeam/django-rest-framework-social-oauth2/issues/15
这里说我需要通过 oauth_token_secret
curl -X POST -d "grant_type=convert_token&client_id=<client_id>&backend=twitter&token=oauth_token=<token>%26oauth_token_secret=<secret_token>" http://localhost:8000/auth/api/convert-token
根据 Android 应用程序的需要,在请求中将其作为 application/x-www-form-urlencoded 发送。
我正在尝试使用 Python 社交从 Android 授权,我正在传递我的令牌格式: "xxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 设置后端="twitter"和"grant_type":"convert_token"
我为 Facebook 所做的同样的工作。
我得到了正确的设置
SOCIAL_AUTH_TWITTER_KEY = os.environ.get('SOCIAL_AUTH_TWITTER_KEY', '')
SOCIAL_AUTH_TWITTER_SECRET = os.environ.get('SOCIAL_AUTH_TWITTER_SECRET', '')
但每当它在方法 class 中到达 Twitter 后端时:user_data 即调用 Twitter API verify_credentials.json 端点。
它因 400 响应而崩溃,后跟:
{
"error": "invalid_request",
"error_description": "Backend responded with HTTP403: {\"errors\":[{\"message\":\"Your credentials do not allow access to this resource\",\"code\":220}]}."
}
我尝试手动重新创建东西,但同样的事情发生了。
我知道 10 月 31 日的 Twitter API 更改,我在 Twitter 的开发人员面板中添加了应用程序和 live/developement 服务器的回调 url。
twittersdk://
http://127.0.0.1:8000/auth/complete/twitter/
为了以防万一,我改了读+写的权限,但是没用
Access permission
Read, write, and direct messages
Additional permissions
Request email address
此外,我已经刷新了两次密钥和秘密,并小心地将它们放在后端和 Android。
2018 年 10 月 31 日之前,同样的设置工作正常,但突然间什么都不管用了。
从Android我打电话:
TwitterCore.getInstance().getSessionManager().getActiveSession
().getAuthToken().token;
检索令牌。
令牌由 Android 使用 https://api.twitter.com/1.1/account/verify_credentials.json
检索更新
我在 twurl(ruby 应用程序)的帮助下手动测试
twurl authorize -u 'myuser@gmail.com' -p 'mypassword' -c 'xxxxxxxxxxxxxxxxxxxxxxxxx' -s 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -a
然后在 ~/.twurlrc 中有一个 access_token(就像 Android 正在传递)。
但是,GET 请求 verify_credentials.json 需要 token_secret 以及我调试的 属性 我没有从 [=73= 传递 convert_token ]
显示成功的图像:
问题: 我是否需要扩展 Twitter 后端并传递 token_secret 参数以及如何传递?
解决方案
https://github.com/RealmTeam/django-rest-framework-social-oauth2/issues/15 这里说我需要通过 oauth_token_secret
curl -X POST -d "grant_type=convert_token&client_id=<client_id>&backend=twitter&token=oauth_token=<token>%26oauth_token_secret=<secret_token>" http://localhost:8000/auth/api/convert-token
根据 Android 应用程序的需要,在请求中将其作为 application/x-www-form-urlencoded 发送。