护照如何接收个人资料?"/>
护照如何接收个人资料?
我已经用passport
实现了GitHub-Strategy
。这是Glith。它的运行效果非常好,我正在从GitHub接收有关重定向的用户个人资料。
现在,我只是想了解它在幕后的实际运作方式。我没有在stackoverflow上找到任何类似的问题,也没有在Passport上找到。
因此,如果我在Auth-Flow期间打开Chrome Developer Tools,当我单击“使用GitHub登录”时,似乎发生了以下情况:
- 节点路由
/auth/github
被称为 - 节点重定向到
;redirect_uri=https%3A%2F%2Frightful-exclusive-carriage.glitch.me%2Fauth%2Fgithub%2Fcallback&client_id=ccfcc73fac8223317176
- 向用户显示GitHub-Login-Page
- 用户在GitHub凭证中输入类型,然后单击“登录”
- GitHub检查凭据
- 如果提供了有效的凭据,则对用户进行身份验证,并且GitHub重定向到已注册的回调端点,在我的情况下为
- 回调URL具有一个URL参数,例如
?code=02337a951c242b9202fd
。有趣的是,它是GET方法,没有提供其他任何东西。 - 在服务器上,
passport.authenticate('github', ...)
方法在/auth/github/callback
路由内部被调用。 - 当实例化GithubStrategy时,将传递带有签名
function(accessToken, refreshToken, profile, cb)
的回调函数。神奇的是,accessToken
和profile
在这里完全可用。而且我不明白这是怎么发生的。
护照如何接收个人资料?node.js
是否在服务器端调用GitHub?也许与?code=<id>
吗?
是的,这正是NodeJS所做的。这与Passport.JS或Node.JS没有任何关系。这是授权工作的OAuth机制。
[每当诸如Twitter / facebook之类的身份提供者使用/callback
查询参数调用您的?code=
时,它都会命中另一个URL并获取AccessToken,RefreshToken和Idtoken(基本上是用户配置文件)。
您也可以在源代码中签出:
在护照oauth策略的此strategy.js#L157和strategy.js#L173中:
if (req.query && req.query.code) {
....
self._oauth2.getOAuthAccessToken(code, params,
function(err, accessToken, refreshToken, params) {
....
}
....
}
并且oauth2.js#L177软件包upi的oauth2.js#L190和node-oauth
可以看到:
exports.OAuth2.prototype.getOAuthAccessToken= function(code, params, callback) {
...
this._request("POST", this._getAccessTokenUrl(), post_headers, post_data, null, function(error, data, response) {
....
})
}
特别是POST请求正在发送到accessTokenUrl。
更多推荐
护照如何接收个人资料?
发布评论