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 发送。