我在我的反应应用程序中使用apollo graphql.说我有以下查询:
query ListQuery($filter: String!) {
items(filter: $filter) {
id
name
}
}
Run Code Online (Sandbox Code Playgroud)
此查询允许我使用过滤器查询项目列表.假设我使用过滤字符串A,然后使用过滤字符串B.缓存现在包含两个条目:ListQuery(A)和ListQuery(B).
现在让我们说我使用一个变异来添加一个新项目.如何从缓存中删除所有缓存的查询?所以在这种情况下,我想从缓存中删除ListQuery(A)和ListQuery(B).
我怎么能做到这一点?
这与有关Google Plus的问题有关:禁止使用Google Plus自动登录
区别在于我使用的是Google登录平台,而不是具有不同API的google plus。
背景:
我有一个包含免费试用注册表格的定价页面。该表单具有Google登录按钮。我希望已登录的用户仍能够在不使用Google登录导致重定向的情况下查看定价页面。
我的密码
我在页面顶部有一个meta标签,用于标识我的应用程序。 <meta name="google-signin-client_id" content="MY_CLIENT_ID">
我在页面上包含了此脚本:<script src="https://apis.google.com/js/platform.js"></script>
我有这个div呈现按钮: <div class="g-signin2" data-onsuccess="onSignIn"></div>
我的onSignIn函数如下所示:
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token;
$('#google_token').val(id_token); //hidden form value
$('#google-oauth').submit(); //hidden form
}
Run Code Online (Sandbox Code Playgroud)
隐藏的表单将提交到后端,在该后端使用令牌来检索用户的电子邮件地址和名称,然后创建用户帐户并登录。
我的问题是,如果用户已经登录,则Google将自动调用onSignIn函数,从而导致在加载页面时提交表单。有没有办法防止onSignIn函数被自动调用?
参考:https : //developers.google.com/identity/sign-in/web/sign-in