python git 密码_python – 使用通过gitlab oauth作为最终用户的用户名和密码(没有client_secret)...

在我们的团队中,我们使用gitlab(

https://git.example)和捆绑的多数聊天(

https://chat.example).

最重要的是,我们想要一个专门的bot用户(网络钩子有限制,私人频道等),其实际上是像普通用户一样登录.

我们在gitlab中创建了该用户,并且可以通过chrome登录到我们的聊天(聊天登录redir – > gitlab oauth,输入用户名和pw – > redir回到聊天 – > authed).

现在我搜索了实际可以做到这一点的python库,但是我只能找到需要一个client_id和client_secret的一些…从我的理解(请纠正我,如果我错了)这不是我们正在寻找,因为我们不想通过gitlab创建另一个应用程序,而是通过gitlab登录到我们的聊天(已经有一个id(已知)和一个秘密(未知))作为用户.

由于我们找不到这样一个lib,我们还检查了chrome中的网络请求,并尝试通过请求在python中重新创建它,但不能让它工作(不用说,它涉及解析html和csrf令牌) …

再次尝试和很多猜测,我们尝试通过手动获取access_token

client_id = 'the one of mattermost in our gitlab'

user = 'username'

pw = 'password'

r = requests.post(

'https://git.example/oauth/token',

data={

"grant_type": "password",

"username": user,

"password": pw,

"client_id": client_id,

}

)

access_token = r.json()['access_token']

这似乎工作(令牌看起来不错),但是在最重要的API中使用它只会导致401:

ri = requests.get(

'https://chat.example/api/v1/users/me',

headers={'Authorization': 'Bearer ' + access_token}

)

ri.status_code, ri.json()

(401,

{u'detailed_error': u'token=...xxx...',

u'id': u'api.context.session_expired.app_error',

u'is_oauth': False,

u'message': u'Invalid or expired session, please login again.',

u'request_id': u'...yyy...',

u'status_code': 401})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值