首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS应用程序上进行身份验证后,在PHP服务器上获取Google事件

在iOS应用程序上进行身份验证后,在PHP服务器上获取Google事件
EN

Stack Overflow用户
提问于 2013-08-23 03:03:08
回答 1查看 1.3K关注 0票数 5

好的,这就是我想做的.

  1. 用户在iPhone上授权该应用程序具有对Google日历的读写权限。
  2. 我从谷歌那里得到了某种象征
  3. 将令牌传递给我的PHP服务器并将其保存在数据库中
  4. 使用令牌定期检查Google并将其存储在服务器的数据库中
  5. 将Google事件数据作为json发送到应用程序。

我想在服务器上实现Google事件的抓取,这样我就可以围绕它们构建其他功能,比如发送远程推送通知。

我被困在获取auth令牌并将其保存在服务器上并使用它从Google的日历api中获取事件的部分,因为无法找到用于该令牌的资源。有人能给这件事放点光吗。

更新

直到第三步,我才成功地实现了这个场景。

我从Google获得了auth令牌和刷新令牌,并将其保存在数据库中。现在使用Google php客户端,我正在尝试使用前面获得的访问令牌连接到谷歌的日历API。我正在使用以下代码..。

代码语言:javascript
运行
复制
require_once(APPPATH . "libraries/Google/Google_Client.php");
require_once(APPPATH . "libraries/Google/contrib/Google_CalendarService.php");

$client = new Google_Client();
$client->setAccessToken($google_access_token);

$calendar = new Google_CalendarService($client);
$calendarList = $calendar->calendarList->listCalendarList();
echo print_r($calendarList, true);

但现在我发现了这个错误..。

PHP致命错误:在/myserver/application/libraries/Google/auth/Google_OAuth2.php:162中,带有消息的未命名异常'Google_AuthException‘无法解码令牌 堆栈跟踪: /myserver/application/libraries/Google/Google_Client.php(170):Google_oAuth2->setAccessToken(‘a_token.’)

据我所知,我正在直接尝试在Google中设置访问令牌,而不指定任何重定向url或其他通常在用户授权访问服务器上的Google日历时使用的参数。这应该像我想要的那样运作吗?

更新2

经过进一步的研究,我发现使用setAccessToken直接设置访问令牌并不有效,因为Google需要在setAccessToken方法中使用JSON编码的字符串。经过一些调整后,我将代码更改为.

代码语言:javascript
运行
复制
require_once(APPPATH . "libraries/Google/Google_Client.php");
require_once(APPPATH . "libraries/Google/contrib/Google_CalendarService.php");

$client = new Google_Client();
$client->setAccessType('offline');
$client->refreshToken($google_refresh_token);
$newToken = $client->getAccessToken();
$client->setAccessToken($newToken);

$calendar = new Google_CalendarService($client);
$calendarList = $calendar->calendarList->listCalendarList();
echo print_r($calendarList, true);

现在我得到的错误是一个invalid_request

刷新OAuth2令牌时出错,消息:{“错误”:"invalid_request"}‘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-17 06:07:35

最后,我能够回答我自己的问题。希望这能帮到别人。

步骤1& 2。我让谷歌OAuth协议在我的iOS应用程序中按照这个极好的移动教程中的说明工作。

步骤3.我将访问令牌和刷新令牌保存在我的web服务器上的数据库中。

步骤4.使用从iOS应用程序I获得的刷新令牌,使用以下代码连接到Google日历API .

代码语言:javascript
运行
复制
require_once(APPPATH . "libraries/Google/Google_Client.php");
require_once(APPPATH . "libraries/Google/contrib/Google_CalendarService.php");

/* setup google client object */
$client = new Google_Client();
$client->setClientId(GOOGLE_CLIENT_ID);

/* refresh access token */
$client->refreshToken($google_refresh_token);
$newToken = $client->getAccessToken();
$client->setAccessToken($newToken);

/* get google calendars list */
$calendar = new Google_CalendarService($client);
$calendarList = $calendar->calendarList->listCalendarList();
echo print_r($calendarList, true);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18393996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档