标签: google-authentication

AuthSub目标路径前缀与提供的"下一个"URL不匹配

我试图在PHP中使用Gcal API.

我正在使用ZEND框架

function getAuthSubUrl($company) 
{
  $next = "http://$company.mysite.com";
  $scope = 'http://www.google.com/calendar/feeds/';
  $secure = false;
  $session = true;
  return (Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session));
}
$authSubUrl = getAuthSubUrl();
echo "<a href=\"$authSubUrl\">login to your Google account"</a> 
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里做错了什么.我几乎完全按照谷歌的例子.

他们确实有$next = getCurrentUrl();他们的例子,但是当我尝试时,我得到了未定义的错误.

php zend-framework google-calendar-api google-authentication zend-gdata

7
推荐指数
1
解决办法
2741
查看次数

使用YouTube API的永久访问令牌?

我已经通过谷歌文件的Oauth和AuthSub方法进行身份验证,我试图谷歌这没有结果.

对于Facebook来说,你可以请求访问令牌是长的寿命,这意味着你将不必被请求新的令牌每隔几个星期.谷歌和YouTube的具体情况是,有任何身份验证方法可以让您永久使用该令牌吗?

在他们的文档中,他们声明他们有长寿但没有其他细节,确切地说有多长,以及你是否能真正得到一个永不过期的细节.

具体来说,我正在制作一个需要每天登录几个帐户的应用程序,但它是通过cron运行的,所以每次都不会有用户登录它,我宁愿不存储实际的用户/通行证到应用程序本身并使用令牌代替.

php oauth authsub youtube-api google-authentication

7
推荐指数
1
解决办法
5354
查看次数

Google身份验证javascript

我正在尝试在我们的网站上实施谷歌登录.我已经阅读了文档并在apis控制台上设置了一个应用程序.

我更喜欢注册对话框显示在弹出窗口中,并在用户登录后接受我将获得javascript回调的权限.这个api也支持根据文档.所以我在文档的帮助下构建了以下内容;-)

第一部分是使用正确的clientid和apikey加载google客户端脚本async和init脚本.

$gp = new googlePlus('@Trustpilot.Web.Social.Google.ClientID', '@Trustpilot.Web.Social.Google.ApiKey');
(function () {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/client.js?onload=googlePlusClientLoad';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
Run Code Online (Sandbox Code Playgroud)

下一部分是使用谷歌客户端API的部分.加载client.js时调用handleClientLoad().该方法检查使用是否经过身份验证.如果用户是,我的想法是我想登录用户.如果用户尚未经过身份验证,则会有一个按钮,当单击handleAuthClick()时,它会调用handleClientLoad(),但会有一个弹出窗口,用户登录最多(使用谷歌帐户)并接受权限.登录后调用handleAuthResult()来登录用户.

function googlePlus(clientId, apiKey) {
    this.clientId = clientId;
    this.apiKey = apiKey;
    this.scopes = 'https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email';

    /// This method is called when the javascript is loaded async
    this.handleClientLoad = function() {
        gapi.client.setApiKey(this.apiKey);
        window.setTimeout(this.authorize(true), 1);
    };

this.handleAuthResult = function (authResult) {
    console.log(authResult);
    if (authResult && !authResult.error) {
        var token = gapi.auth.getToken(); …
Run Code Online (Sandbox Code Playgroud)

javascript google-api google-authentication google-api-client

7
推荐指数
1
解决办法
4044
查看次数

Google+ API"400(错误请求)"和"拒绝在框架中显示...因为它将'X-Frame-Options'设置为'SAMEORIGIN'." 错误

我正在尝试将G + API与我的网站集成,并且遇到了问题.如果在加载页面时查看控制台,您将看到以下错误:

GET https://accounts.google.com/o/oauth2/postmessageRelay?parent=http%3A%2F%2Fwww.pricewombat.com 400 (Bad Request) cb=gapi.loaded_0:436

Refused to display 'https://accounts.google.com/o/oauth2/postmessageRelay?parent=http%3A%2F%2Fwww.pricewombat.com#rpctoken=356505585&forcesecure=1' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Run Code Online (Sandbox Code Playgroud)

我只是使用Google网站上提供的示例代码:

<script type="text/javascript">
    (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/client:plusone.js?onload=googlePlusOnloadCallback';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

如果我gapi.auth.signIn()在控制台中运行,则没有任何反应.我假设问题与页面加载时的上述错误有关.

是什么导致了这个问题,我该如何解决?

更新:

我使用此准系统代码在我的网站上创建了一个空白页面:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>

<script type="text/javascript">
    (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = …
Run Code Online (Sandbox Code Playgroud)

google-api google-authentication google-plus

7
推荐指数
1
解决办法
5401
查看次数

如何确定用户是否关闭了google auth2.signIn()窗口?

我使用这个实现auth,当用户点击按钮登录并且auth2帐户选择/登录窗口显示时,我当前在React中显示加载图标.

然而,如果用户关闭窗口,似乎没有任何事件被触发,即返回一个承诺的signIn()函数永远不会解析,我会认为如果窗口关闭,谷歌将为此承诺返回错误.因此,我无法停止显示加载程序图标并重新显示登录菜单.

我想知道是否有人有这个解决方案?

javascript google-api google-authentication google-signin google-identity

7
推荐指数
2
解决办法
2951
查看次数

使用OAuth2服务帐户生成访问令牌时出现问题

我们在使用适用于Google Apps市场用户的OAuth2服务帐户生成访问令牌时遇到问题.此处生成的令牌将用于访问Google API(联系人,日历,邮件,管理SDK API),因此我们服务中的所有Google集成都会失败.从太平洋标准时间3月9日太平洋标准时间开始突然失败.您能否将此视为重中之重,请告知我们问题的原因,或者我们是否遗漏了这些问题.我们正在获得API响应

{ "error": "invalid_request" }
Run Code Online (Sandbox Code Playgroud)

请查看以下示例请求以及" https://www.googleapis.com/oauth2/v4/token "(如文档中)和" https://accounts.google.com "的2个示例请求的所有标题和参数/ o/oauth2/token "端点.两者都分别导致响应{"error":"internal_failure","error_description":"Invalid Value"}和{"error":"invalid_request"}的错误消息.

PS:如果我们使用相应的Google客户端库,则服务电子邮件地址,用于在示例请求中生成以下签名的私钥文件都有效.但我们正在使用Google的REST API.我们在Google API控制台中创建了一个示例应用程序,用于测试新的服务帐户详细信息,这会导致相同的异常.

网址:

https://www.googleapis.com/oauth2/v4/token

头:

内容类型:应用/ X WWW的窗体-urlencoded

身体:

grant_type =瓮%3Aietf%3Aparams%3Aoauth%3Agrant型%3Ajwt承载&断言= eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjQvdG9rZW4iLCJzdWIi OiJqYWdzQHNvbHV0aW9udGVzdC5jb20iLCJzY29wZSI6Imh0dHBzOi8vbWFpbC5nb29nbGUuY29t LyIsImlzcyI6IjQ2OTU3MTY1OTAxNUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsImV4 cCI6MTQ1NzU5NTkwMCwiaWF0IjoxNDU3NTkyMzAwfQ ==.VrsqS0nYSUVZn_SwMi7UJEYLDqRcWLzPrF9o6av-t1IYZbRkTybEdcnwWeUfnYXl_F88gFTllmRg LSTBahM5gqpZrEAaWrRiDEVTo6rcN3hWm7MHcmZbwgdJB8B0ObV0Ivp5aTdLC5HcqsOumJvYpDCF SyGU8StSg9pDujERzOo =

响应:

代码:400 {"error":"internal_failure","error_description":"无效值"}

网址:

https://accounts.google.com/o/oauth2/token

头:

内容类型:应用/ X WWW的窗体-urlencoded

身体:

grant_type =瓮%3Aietf%3Aparams%3Aoauth%3Agrant型%3Ajwt承载&断言= eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjQvdG9rZW4iLCJzdWIi OiJqYWdzQHNvbHV0aW9udGVzdC5jb20iLCJzY29wZSI6Imh0dHBzOi8vbWFpbC5nb29nbGUuY29t LyIsImlzcyI6IjQ2OTU3MTY1OTAxNUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsImV4 cCI6MTQ1NzU5NTkwMCwiaWF0IjoxNDU3NTkyMzAwfQ ==.VrsqS0nYSUVZn_SwMi7UJEYLDqRcWLzPrF9o6av-t1IYZbRkTybEdcnwWeUfnYXl_F88gFTllmRg LSTBahM5gqpZrEAaWrRiDEVTo6rcN3hWm7MHcmZbwgdJB8B0ObV0Ivp5aTdLC5HcqsOumJvYpDCF SyGU8StSg9pDujERzOo =

响应:

代码:400 {"error":"invalid_request"}

编辑:文档中的示例请求.这段代码在过去的两年里为我们工作,突然间它昨天停止了工作.

POST/oauth2/v4/token HTTP/1.1主机:www.googleapis.com内容类型:application/x-www-form-urlencoded

grant_type =瓮%3Aietf%3Aparams%3Aoauth%3Agrant型%3Ajwt承载&断言= eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaGc3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsImV4cCI6MTMyODU3MzM4MSwiaWF0IjoxMzI4NTY5NzgxfQ.ixOUGehweEVX_UKXv5BbbwVEdcz6AYS-6uQV6fGorGKrHf3LIJnyREw9evE-gs2bmMaQI5_UbabvI4k-mQE4kBqtmSpTzxYBL1TCd7Kv5nTZoUC1CmwmWCFqT9RE6D7XSgPUh_jF1qskLa2w0rxMSjwruNKbysgRNctZPln7cqQ

google-api google-apps google-authentication google-apps-marketplace service-accounts

7
推荐指数
1
解决办法
1249
查看次数

无法在Firebase中使用Google身份验证获取电子邮件

我正在使用Firebase提供的代码进行Google身份验证,并且以某种方式,身份验证成功,但是电子邮件未正确导入到Firebase。

https://firebase.google.com/docs/auth/ios/google-signin

如您在以下屏幕截图中所见,该电子邮件为空白。当我看着调试器时,它显示为nil。
我单击了“允许在身份验证期间查看电子邮件”,但是我认为仍有一些设置未正确完成。有人可以帮我看看吗?我有兴趣使用电子邮件为每个用户创建用户名。

在此处输入图片说明

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
    if let error = error {
        print(error.localizedDescription)
        return
    }

    let authentication = user.authentication
    let credential = FIRGoogleAuthProvider.credentialWithIDToken(authentication.idToken,
                                                                 accessToken: authentication.accessToken)
    FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
        if error != nil {
            print(error?.localizedDescription)
            return
        }

        print("User logged in with Google...")
        self.performSegueWithIdentifier("ToHome", sender: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

google-authentication ios firebase swift firebase-authentication

7
推荐指数
1
解决办法
1648
查看次数

允许用户使用iframe中的所选Google帐户登录(Chrome扩展程序)

不幸的是,我没有看到一个问题,问我到底需要什么,所以我决定发一个.

问题:我有一个加载iframe边栏的chrome扩展.在初始加载时,用户需要使用他们选择的Google帐户登录.此外,如果用户访问实际站点(在新选项卡中),则应向用户显示相同的身份验证流程(理想情况下).

我目前使用Google帐户选择器,当使用网站的iframe版本时,我遇到了一些问题,主要是:

拒绝在一个框架中显示" https://accounts.google.com/AccountChooser?continue=https://accounts.google ... t.com%26from_login%3D1%26as%3D473effc061cc82d5&btmpl = authsub&scc = 1&oauth = 1',因为它已设置'X-Frame-Options'到'DENY'.

总结一下,我需要的是:

  • 一个auth流程,解决
    1. 通过iframe登录该网站
    2. 在新标签中登录该网站.
  • 允许用户选择与帐户选择器类似的Google帐户的身份验证流程

javascript iframe google-authentication google-chrome-extension oauth-2.0

7
推荐指数
0
解决办法
792
查看次数

反应原生的Google服务帐户身份验证

我想在我的本机应用中使用服务帐户身份验证,以便让人们更新电子表格而无需他们登录到他们的Google帐户.

我很失落如何去做,因为我看到的所有前端代码都与传统的oauth2登录有关.

任何的想法?

android google-api google-authentication react-native

7
推荐指数
1
解决办法
1290
查看次数

(仍未解决)授权Web客户端访问客户端和服务器端的用户Google日历?(使用Firebase和Google API)

我有一个火力地堡的web应用程序,
并希望这样的任何用户可以登录并授权我的web应用程序访问他的谷歌日历(读/写)在客户端服务器端(管理日历,当用户在线时,当他的下线).


客户端.
Google开发者控制台上创建API密钥OAuth 2.0客户端ID(Web应用程序)后,我实现了以下代码:

首先,通过Firebase Authentification登录Google

firebase.initializeApp({apiKey: 'MY_WEB_APP_API_KEY'})
var provider = new firebase.auth.GoogleAuthProvider()
provider.addScope('https://www.googleapis.com/auth/calendar')
firebase.auth().signInWithPopup(provider)
Run Code Online (Sandbox Code Playgroud)

并且,要求授权我的Web应用程序可以使用Google Api JS客户端访问用户的Google日历

// https://apis.google.com/js/api.js
gapi.load('client:auth2', () => {
  gapi.auth2.authorize({
      scope: 'https://www.googleapis.com/auth/calendar',
      client_id: 'MY_WEB_APPL_CLIENT_ID',
      prompt: 'none',
      access_type: 'offline',
      include_granted_scopes: true
    }, () => {
      gapi.client.init({
        discoveryDocs: ['https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest']
      }).then(()  => {
        return gapi.client.calendar.events.list({
          calendarId: 'ANY_USER_CALENDAR_ID' // example: …
Run Code Online (Sandbox Code Playgroud)

javascript google-api google-authentication google-api-nodejs-client firebase-authentication

7
推荐指数
1
解决办法
263
查看次数