- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个带有 google plus 登录的 android 应用程序。当用户尝试登录时,我将 token 发送到服务器并使用官方 Official Google APIs Client Library for PHP 通过 google API 对其进行验证。
当我尝试验证访问 token 时发生错误,所以我调试它并记录请求结果的响应:
object(Google_Http_Request)#5 (14) { ["batchHeaders":"Google_Http_Request":private]=> array(3) { ["Content-Type"]=> string(16) "application/http" ["Content-Transfer-Encoding"]=> string(6) "binary" ["MIME-Version"]=> string(3) "1.0" } ["queryParams":protected]=> array(0) { } ["requestMethod":protected]=> string(4) "POST" ["requestHeaders":protected]=> array(2) { ["content-type"]=> string(33) "application/x-www-form-urlencoded" ["content-length"]=> int(254) } ["baseComponent":protected]=> string(27) "https://accounts.google.com" ["path":protected]=> string(15) "/o/oauth2/token" ["postBody":protected]=> string(254) "code=ya29.2QAkG7lKto3jZk-6ASgU0MUw_Wy7MdecJTudTkHC4D_XXXXXXFoDHct7C1g&grant_type=authorization_code&redirect_uri=&client_id=547769313690-XXXX.apps.googleusercontent.com&client_secret=hmOBOZk6EDJo-HVq4AMaIUwY" ["userAgent":protected]=> string(0) "" ["canGzip":protected]=> bool(false) ["responseHttpCode":protected]=> int(400) ["responseHeaders":protected]=> array(11) { ["content-type"]=> string(16) "application/json" ["cache-control"]=> string(46) "no-cache, no-store, max-age=0, must-revalidate" ["pragma"]=> string(8) "no-cache" ["expires"]=> string(29) "Fri, 01 Jan 1990 00:00:00 GMT" ["date"]=> string(29) "Thu, 11 Dec 2014 11:53:39 GMT" ["x-content-type-options"]=> string(7) "nosniff" ["x-frame-options"]=> string(10) "SAMEORIGIN" ["x-xss-protection"]=> string(13) "1; mode=block" ["server"]=> string(3) "GSE" ["alternate-protocol"]=> string(15) "443:quic,p=0.02" ["transfer-encoding"]=> string(7) "chunked" } ["responseBody":protected]=> string(80) "{ "error" : "invalid_grant", "error_description" : "Incorrect token type." }" ["expectedClass":protected]=> NULL ["accessKey"]=> NULL }
这是我的 PHP 代码:
<?php
$google_client_id = 'XXX.apps.googleusercontent.com';
$google_client_secret = 'XXX-HVq4AMaIUwY';
$google_redirect_url = 'xxx';
$google_developer_key = 'XXXXXXXXX';
$google_application_name = 'XXX Login';
$google_application_scope = 'https://www.googleapis.com/auth/plus.me'; /* I only needed the basic user info */
$google_redirect_uri='';
//include google api files
require_once 'vendor/autoload.php';
$gClient = new Google_Client();
$gClient->setApplicationName($google_application_name);
$gClient->setClientId($google_client_id);
$gClient->setClientSecret($google_client_secret);
//$gClient->setRedirectUri($google_redirect_uri);
$gClient->setScopes($google_application_scope);
// $gClient->setDeveloperKey($google_developer_key);
//$gClient->setAccessType('offline');
$gClient->authenticate("ya29.2QAkG7lKto3jZk-6ASgU0MUw_Wy7MdecJTudTkHC4D_XXXXXX");
$token = json_decode($gClient->getAccessToken());
$google_oauthV2 = new Google_Service_Oauth2($gClient);
$user_info = $google_oauthV2->userinfo->get();
var_dump($user_info);
die();
最佳答案
我最近在 http://www.sanwebe.com/2012/11/login-with-google-api-php 上的教程的帮助下实现了同样的目标
您似乎错过了 OAuth 流程的一部分。身份验证功能需要在登录时接收从 Google 发送的 token 。
输入有效的重定向 URI 也可以避免潜在的问题。
希望对您有所帮助。
关于php - 谷歌 API 客户端 :"{ "错误“: "invalid_grant", "error_description": "Incorrect token type."}”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422463/
我有一个简单的 web api 项目,它看起来像这样: [Authorize] [Route("Get")] public ActionResult SayHello(
我正在 SpringBoot RestFul API 中实现 Oauth2。一切工作正常,除了当我使用错误密码时收到错误响应: 状态:400错误请求 { "error": "invalid_g
我有一个从 azure 请求 token 的角度应用程序。登录进行得很顺利,我得到了一个 token 。此 token 现在从 angular 应用程序发送到网络核心 webapi 应用程序。 Net
我尝试使用 'omnioauth-salesforce' 使用 salesforce 开发人员登录登录功能,我提到了回调 http://localhost:3000/auth/salesforce/c
我正在尝试在 IOS 应用程序中实现 OAuth2 隐式授权流程。在这种情况下,它需要 token 请求而不是代码请求,因为您无法在 native 应用程序中安全地共享客户端 key 。 这样的请求会
我正在尝试在 IOS 应用程序中实现 OAuth2 隐式授权流程。在这种情况下,它需要 token 请求而不是代码请求,因为您无法在 native 应用程序中安全地共享客户端 key 。 这样的请求会
我正在尝试在 Spring Boot 中使用 AuthorizationServer 和 ResourceServer。AuthorizationServer的代码是这样的 @EnableAuthor
我写了一个非常简单的 Spring boot 应用程序。 为了获取身份验证 token ,我使用了以下 curl 命令。但是我在服务器日志(eclipse 控制台)中看到以下错误:error="inv
我正在尝试获取我的 salesforce partialbox 的 session ID。 我的代码: curl https://test.salesforce.com/services/oauth2
无法弄清楚我在这里做错了什么。尝试在 selenium 测试(java)中通过 SF 的 API 获取访问 token ,并不断收到相同的错误。在 cypress (javascript) 中进行了完
我正在尝试将 Spring security oauth 集成到 struts 应用程序中。我遇到了上述错误,但我无法解决。我正在限制 Spring Security 对/oauth/token 的访
Postman headers我正在使用 key 生成访问 token ,我将使用该 token 对我调用的 API 进行身份验证。问题是我收到错误: 状态代码为:401,预期:200WWW-Auth
我尝试使用 FOSOAuthServerBundle 来验证用户各自的访问 token 。 我按照链接进行了所有设置:http://blog.tankist.de/blog/2013/07/17/oa
我正在开发一个带有 google plus 登录的 android 应用程序。当用户尝试登录时,我将 token 发送到服务器并使用官方 Official Google APIs Client Lib
下面是我的代码。我正在尝试获取 token 以便进行身份验证。遇到问题,因为我没有被重定向到另一个 URL。我已经将 URI 输入到我的 Spotify 开发者应用程序中。不确定出了什么问题,或者我是
一周无法设置 SalesForce OAuth 并出现同样的错误。没有任何想法了:( 我做了什么: 在销售人员中创建帐户 创建新应用,获取安全 key 和 secret 以在我的 Web 应用中使用
我正在尝试在 SharePoint Online 中执行 REST API 调用。为此,我想看看是否可以在 Azure AD 中注册应用程序。我相信我能够做到这一点并且能够拿回 token 。但是,在
我正在按照有关如何使用 Postman 从 Paypal 获取访问 token 的说明进行操作。 我不断收到此错误消息: "error": "unsupported_grant_type", "err
我知道已经有类似的问题,但所有答案大多是“哦,我忘了在末尾加上斜线”但这绝对让我发疯。我试图从 Spotify API 获取访问 token ,但我一直收到无效的重定向 uri 错误。 这是我的 ap
我是 flutter 的新手,试图从我的后端服务器从 google 访问 auth token ,但每次 token 都无效。 我正在使用 FirebaseUser user await user.g
我是一名优秀的程序员,十分优秀!