我正在使用这个 github 项目https://github.com/openiddict/openiddict-core ,这很棒。但是当用户使用外部身份提供者时,我不知道程序应该是什么,或者如何实现它们,对于这个例子,我将使用谷歌。
我有一个 angular2 应用程序正在运行,带有一个 aspnet 核心 webAPI。我所有的本地登录都可以正常工作,我connect/token
使用用户名和密码调用,并返回 accessToken。
现在我需要将 google 实现为外部身份提供者。我已经按照这里的所有步骤来实现一个谷歌登录按钮。当用户登录时,这会打开一个弹出窗口。这是我为我的 google 按钮创建的代码。
// Angular hook that allows for interaction with elements inserted by the
// rendering of a view.
ngAfterViewInit() {
// check if the google client id is in the pages meta tags
if (document.querySelector("meta[name='google-signin-client_id']")) {
// Converts the Google login button stub to an actual button.
gapi.signin2.render(
'google-login-button',
{
"onSuccess": this.onGoogleLoginSuccess,
"scope": "profile",
"theme": "dark"
});
}
}
onGoogleLoginSuccess(loggedInUser) {
let idToken = loggedInUser.getAuthResponse().id_token;
// here i can pass the idToken up to my server and validate it
}
现在我有一个来自谷歌的 idToken。在此处找到的谷歌页面上的下一步说我需要验证谷歌 accessToken,我可以这样做,但是如何交换我从谷歌获得的 accessToken,并创建可以在我的应用程序上使用的本地 accessToken?