gpt4 book ai didi

javascript - 使用 Google 登录 Javascript 库强制用户批准提示

转载 作者:行者123 更新时间:2023-11-29 21:43:52 25 4
gpt4 key购买 nike

我的应用程序遵循服务器端流程,如 https://developers.google.com/identity/sign-in/web/server-side-flow 中所述, 它为客户端提供一个一次性代码,该代码被转发到服务器,服务器在其中获得 access_tokenrefresh_token

在以前版本的 Google Sign-In for Javascript 库中,开发人员能够在设置库时传递属性 'approval_prompt': 'force',以强制批准提示当用户点击 Google 登录按钮时出现。如果您需要再次获取 refresh_token,这可能非常有值(value),因为一次性代码仅在向用户显示批准提示时授予 refresh_token

以前在较旧的 API 中,我可以在调用 gapi.signin.render() 期间传递 'approval_prompt': 'force' 以强制提示。在较新版本的 API 中(使用 gapi.auth2.init()),它似乎不遵守 'approval_prompt': 'force'。是否仍然可以使用 Javascript 库中较新的 API 来强制使用 'approval_prompt': 'force' 或与以前版本中类似的机制进行批准提示?

最佳答案

为了将 'approval_prompt': 'force' 与 gapi 一起使用,您可以使用 grantOfflineAccess 将参数考虑在内,而 gapi.signin。 render() 没有。

这是一个小的身份验证示例,用于在指定范围内进行离线访问并使用 'approval_prompt': 'force' 始终请求权限(并最终每次都获得新的刷新 token ):

<!-- The top of file index.html -->
<html itemscope itemtype="http://schema.org/Article">
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://apis.google.com/js/platform.js?onload=start" parsetags="explicit" async defer></script>

<title>Google authentication</title>

<style type="text/css">
#customBtn {
display: inline-block;
background: white;
color: #444;
width: 190px;
border-radius: 5px;
border: thin solid #888;
box-shadow: 1px 1px 1px grey;
white-space: nowrap;
}
#customBtn:hover {
cursor: pointer;
}
span.label {
font-family: serif;
font-weight: normal;
}
span.icon {
background: url('https://developers.google.com/identity/sign-in/g-normal.png') transparent 5px 50% no-repeat;
display: inline-block;
vertical-align: middle;
width: 42px;
height: 42px;
}
span.buttonText {
display: inline-block;
vertical-align: middle;
padding-left: 42px;
padding-right: 42px;
font-size: 14px;
font-weight: bold;
/* Use the Roboto font that is loaded in the <head> */
font-family: 'Roboto', sans-serif;
}
</style>
</head>

<body>
<h1>Google Authentication</h1>
<hr>

<div id="gSignInWrapper">
<span class="label">Sign in with:</span>
<div id="customBtn" class="customGPlusSignIn">
<span class="icon"></span>
<span class="buttonText">Google</span>
</div>
</div>

<div id="log"></div>

<script>

var auth2;

function start() {

gapi.load('auth2', function () {
auth2 = gapi.auth2.init({
client_id: "YOUR_CLIENT_ID",
scope: 'profile'
});
});
$('#customBtn').click(function () {

auth2.grantOfflineAccess({'redirect_uri' : 'postmessage', 'approval_prompt' : 'force'}).then(signInCallback);

});
}

function signInCallback(authResult) {

console.log(authResult['code']);

}

</script>
</body>
</html>

关于javascript - 使用 Google 登录 Javascript 库强制用户批准提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com