标签: google-oauth2

如何强制使用Google的OAuth 2.0为单个帐户用户登录帐户?

有时,当用户使用Google的OAuth 2.0登录网站时,他们会选择错误的帐户进行登录.通常情况下,如果用户在浏览器中注册了多个帐户,这不是问题,谷歌会自动显示用户选择屏幕: 用户选择屏幕

但是,如果用户只有一个帐户并且已登录,则会跳过此屏幕.相反,我需要Google的登录面板始终显示,以便我可以确定用户可以选择尝试输入正确的帐户.我尝试使用approval_prompt = "force",但这会强制接受权限而不是简单地显示登录页面. 谷歌的一个用户登录
如何强制Google的OAuth 2.0始终显示登录屏幕?
(并且永远不会自动跳过它)

oauth-2.0 google-oauth owin google-oauth2

5
推荐指数
1
解决办法
1674
查看次数

Google自定义搜索Api的身份验证

简短的问题:

2015年4月20日之后,是否有人使用Google Custom Search Api进行身份验证?

更长的版本:

我正在尝试使用Google Custom Search Api来请求按需索引.在我开始之前,我遇到了身份验证问题.根据文档,您应该使用ClientLogin Api进行身份验证.这个Api于2015年4月20日关闭,当你尝试从中获取令牌时它现在返回404.

ClientLogin 文档上的弃用通知声明使用Oauth.

因此,我试图验证几乎一样侯赛因在这里 我收到了来自谷歌的承载令牌,但是当我尝试做一个请求,我收到了401以下消息

<Error>You are not authorized to access this resource.  If you feel this is an error, try re-logging into your Google Account.</Error>
Run Code Online (Sandbox Code Playgroud)

这并不奇怪,因为没有最新文档,我盲目地试图寻找正确的解决方案.

我目前在C#中的代码:

private static async Task Run()
{
    var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer("blablabla@developer.gserviceaccount.com")
    {
        Scopes = new[] { "https://www.googleapis.com/auth/cse" }
    }.FromPrivateKey("-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n"));
    await credential.RequestAccessTokenAsync(CancellationToken.None);
    var token = credential.Token;
    var client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = …
Run Code Online (Sandbox Code Playgroud)

google-api google-search-api google-custom-search google-oauth2

5
推荐指数
0
解决办法
463
查看次数

无法创建oauth客户端ID(Google开发者控制台)

我在我的应用中包括通过google功能登录,为此我已经为我的调试和发布模式创建了oauth客户端ID密钥,但是由于所有操作均无法正常进行,因此我想再次删除并重新创建它,所以我删除了两个密钥,但是现在当我尝试创建新密钥时,它给了我错误

 Duplicate fingerprint

The fingerprint you specified is already used by an Android OAuth2 client ID in this project or another project
Run Code Online (Sandbox Code Playgroud)

但是我已经删除了两个密钥,我尝试了堆栈溢出中已经存在的所有解决方案,例如进入旧的控制台门户等。但是都没有帮助我,请帮助我解决这个问题

oauth google-api google-oauth google-oauth2

5
推荐指数
1
解决办法
608
查看次数

如何使用Google一次性授权代码交换刷新令牌而无需回调(内部网)?

我正在使用基于Intranet的应用程序,并且想使用Google服务。目前,我已经使用JavaScript客户端身份验证成功实现了带有“网站登录”功能的Google身份验证。我的用户现在可以登录或注册其Google帐户。

现在,我想使用Google API创建我的用户并与他们共享Google表格。这些文档将使用特定的Google帐户创建,然后与我的用户共享。

这就是为什么我要使用此服务器幻灯片流程获取一次性授权代码并将其交换为刷新令牌的原因:https : //developers.google.com/identity/sign-in/web/server-side-流

Google混合服务器端流程

此刷新令牌将存储在我的数据库中,使我可以代表该离线用户使用Google服务。

使用JavaScript库,我能够获得随AJAX请求发送到服务器的一次性授权代码。

auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(grantOfflineAccessCallback);

var grantOfflineAccessCallback = function(authResult) {
    var auth_code = authResult.code;

    // Exchange the one-time authorization code for tokens
    $.post(...);
}
Run Code Online (Sandbox Code Playgroud)

在服务器端,我使用Google API PHP客户端(v2.0.0-RC6)获取访问和刷新令牌。

$this->client = new Google_Client();
$this->client->setClientId($this->clientId);
$this->client->setClientSecret($this->clientSecret);
$this->client->setAccessType('offline');
$this->client->setApprovalPrompt('force');

$response = $this->client->fetchAccessTokenWithAuthCode($oneTimeCode);
Run Code Online (Sandbox Code Playgroud)

我无法交换授权码。

Client error: `POST https://www.googleapis.com/oauth2/v4/token` resulted in a `400 Bad Request` response:
{
 "error": "invalid_request",
 "error_description": "Missing parameter: redirect_uri"
}
Run Code Online (Sandbox Code Playgroud)

在此页面上,我们可以阅读:

在服务器上,将身份验证代码交换为访问和刷新令牌。使用访问令牌代表用户调用Google API。

在JAVA示例代码上:

REDIRECT_URI: // Specify the same redirect URI that you use with …
Run Code Online (Sandbox Code Playgroud)

google-api google-oauth google-api-php-client google-oauth2

5
推荐指数
0
解决办法
1218
查看次数

Cordova app google OAuth2无效cookiePolicy

案例:
使用Cordova开发iOS/Android应用程序,您可以使用OAuth2使用Google帐户登录.

问题:
在浏览器上启动应用程序时,localhost:3000我可以正常登录我的谷歌帐户,但是当我尝试启动我的Cordova应用程序cordova run ios 时崩溃.

Cordova给出的错误是:

在此输入图像描述

就像我提到的那样,我使用OAuth2,使用你的谷歌帐户登录,我在我的应用程序中使用的以下设置是:在此输入图像描述

出于某种原因,我认为问题在于oAuth2链接,因为我所遇到的错误始于缺口.auth2

google-api cordova phonegap-build google-oauth2

5
推荐指数
1
解决办法
422
查看次数

Google OAuth invalid_grant /错误请求-描述中的解决方案

根据身份验证代码流,我正在尝试从Google获取访问令牌。

由于它无法在我的后端正常工作,因此我尝试对其进行卷曲/邮递员处理,但这也不起作用。

curl -d "&code=4/IkYUPa4FNw_-o6bd4v5dLqVx4ssGfyPJRBQFzy9aNQ&client_id=807080008535-9ji0g54v0lt9b6ukn19rp807k3j2t0uj.apps.googleusercontent.com&client_secret=SOMESECRET&redirect_uri=com.fitisfit.app:/googlefit&grant_type=authorization_code" https://www.googleapis.com/oauth2/v4/token
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

{
    "error": "invalid_grant",
    "error_description": "Bad Request"
}
Run Code Online (Sandbox Code Playgroud)

如果我连续(3或4)次卷曲,则会收到一条错误消息,提示代码已被兑换。因此,Google网站上可能发生了某些情况。

我做了一些研究,但所有建议都没有帮助(拼写,检查服务器时间,添加access_type=offline到第一个OAuth步骤网址等)

更新:我刚刚发现了问题。我必须设置curl参数,例如:

curl \
  -d code=4/LjNMkGqqQvJAB96Z6F-U52u4kqo5RHkqLp0LJYZ-zAw \
  -d client_id=807080008535-9ji0g54v0lt9b6ukn19rp807k3j2t0uj.apps.googleusercontent.com \
  -d client_secret=SOMESECRET \
  -d redirect_uri=http://localhost \
  -d grant_type=authorization_code https://www.googleapis.com/oauth2/v4/token
Run Code Online (Sandbox Code Playgroud)

curl oauth google-oauth2

5
推荐指数
1
解决办法
2979
查看次数

Google OAuth2的客户端机密到底是什么?

Google的OIDC指南中,部分Exchange code for access token and ID token指出我必须提供client_secret

如果我从API控制台中选择了相关的客户端ID,则确实会得到一个名为的JSON文件client_secret_...。但是,JSON对象的所有字段均未命名为secret或类似名称。(字段被命名为client_idproject_idauth_uritoken_uriauth_provider_x509_cert_url,和redirect_uris)。

那么,我从哪里得到的client_secret呢?

android google-oauth google-oauth2 google-signin google-developers-console

5
推荐指数
1
解决办法
2063
查看次数

如何验证从Ruby on Rails服务器上的Android发送的Google令牌ID?

我有一个带Google登录功能的Android应用。根据文档,我生成了令牌ID:

// Configure Google Sign-In with the requestIdToken

GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.server_client_id))
                .requestEmail()
                .build();

// Handle result

private void handleSignInResult(GoogleSignInResult result) {
    if (result.isSuccess()) {
        GoogleSignInAccount account = result.getSignInAccount();
        String tokenId = account.getIdToken();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Ruby on Rails的服务器端面临问题。我正在尝试使用google-id-token宝石。自述文件给出了以下示例:

validator = GoogleIDToken::Validator.new(expiry: 1800)
begin
  payload = validator.check(token, required_audience, required_client_id)
  email = payload['email']
rescue GoogleIDToken::ValidationError => e
  report "Cannot validate: #{e}"
end
Run Code Online (Sandbox Code Playgroud)

我有token(来自android java代码)。什么required_audience啊 我应该使用相同client_id的客户端应用程序吗?当我尝试在服务器上运行代码时,得到的有效负载为nil

另外,我想知道这是否是验证令牌ID的正确方法。

ruby ruby-on-rails google-api ruby-on-rails-5 google-oauth2

5
推荐指数
1
解决办法
968
查看次数

如何使用我的凭据或特殊生成的ID和密码在google api中进行身份验证?

我想从我的个人日历中获取所有活动.我已经尝试了几个小时所有类型的auth类型:我成功地使用回调验证,我应该登录到我的谷歌帐户,然后谷歌重定向回我的网站. - 但这不是我需要的.此外,我尝试使用默认凭据,令我惊讶的是,我无法访问我的日历,这是什么样的逻辑.

基本上,它在Spotify中如何为我工作:在Spotify中可以在我的帐户中生成客户端ID和密码.之后,我从我的代码中发送带有base64(client:password)的HTTP,并从我的代码接收令牌,我用它来查询某些实体.

但在谷歌API我没有找到这样的解决方案.也许有人可以建议如何进行身份验证?

php google-calendar-api google-api google-oauth google-oauth2

5
推荐指数
1
解决办法
211
查看次数

错误400:invalid_scope"https://www.googleapis.com/auth/chat.bot"

新谷歌聊天聊天的文档说你需要授权范围https://www.googleapis.com/auth/chat.bot做几乎任何事情.

这是错误:

在此输入图像描述

在使用OAuth2客户端生成身份验证URL时,我收到范围无效的消息.如果我使用https://www.googleapis.com/auth/chatgoogle plus等其他范围,我就没有这个问题.

当我尝试在API资源管理器中搜索内容时,URL或URL部分的组合也不起作用.

这是我获取URL的代码,似乎对其他一切工作正常:

var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;

var oauth2Client = new OAuth2(
  "clientid-idididid.apps.googleusercontent.com",
  "_secretsuff",
  "http://localhost:3000/auth/google/callback"
);

var scopes = [
    "https://www.googleapis.com/auth/chat", //Works
    "https://www.googleapis.com/auth/chat.bot"  // Does not work
];

var url = oauth2Client.generateAuthUrl({
  access_type: 'offline',
  scope:  scopes,
});

console.log(url);
Run Code Online (Sandbox Code Playgroud)

google-authentication oauth-2.0 google-oauth2 hangouts-chat

5
推荐指数
1
解决办法
2039
查看次数