我可以单独使用prompt=consent
和prompt=select_account
,但Google似乎不允许我将它们合并。我按照Force google account chooser的回答中的建议尝试了prompt=consent+select_account
,但失败了错误:"无效提示:同意+ select_account"。
文档(https://developers.google.com/accounts/docs/OAuth2Login)说"以空格分隔的列表",所以我尝试了consent select_account
但是失败了:"找不到请求的网址这个服务器。"
我也尝试过合并prompt=select_account
和approval_prompt=force
,但谷歌也不喜欢这样。
其他人在结合同意书和帐户选择器方面有好运吗?
更新
这是我的JavaScript方法,用于创建从gmail获取联系人的URL
$scope.importGmailContacts = function() {
provider = 'gmail';
$scope.importing_from_gmail = true;
window.open(protocol + "://" + host + ":" + port + "/contacts/gmail", "_blank",
"toolbar=yes, scrollbars=yes, resizable=yes, top=0, left=0, width=600, height=600, prompt='select_account+consent', approval_prompt=force");
}
我尝试过集体和单独设置prompt
和approval_prompt
,但似乎无效。 Refer to this question。
答案 0 :(得分:1)
我刚试过这个,并且在空格分隔时它可以工作:
options [:prompt] ='select_account consent'
答案 1 :(得分:1)
您需要添加:access_type=online&prompt=select_account+consent
:
private static final String AUTHORIZE_URL
= "https://accounts.google.com/o/oauth2/auth?"
+ "response_type=code&access_type=online&prompt=select_account+consent"
+ "&client_id=xxx&redirect_uri=xxx";
private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=xxx";
...
答案 2 :(得分:-1)
导致错误
- 这是一个错误。
醇>错误:invalid_request
冲突参数:approval_prompt和提示
Prompt和approval_prompt参数不能一起使用。
prompt可选。
以空格分隔的区分大小写的提示列表,以呈现用户。如果您未指定此参数,则仅在您的应用首次请求访问时才会提示用户。可能的值是:
无不显示任何身份验证或同意屏幕。不得与其他值一起指定 同意提示用户同意 select_account 提示用户选择一个帐户。
如果内存服务appro_prompt是较旧的方式,并且谷歌在2012年的某个时候添加了提示。我实际上找不到任何关于approval_prompt的文档,但是如果内存服务它就像做提示=同意它只是再次请求访问。