- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 google-api-php-client 0.6.1,我想知道有没有办法用服务帐户模拟具体用户?我的应用程序需要在其谷歌驱动器中存储一些文件。因此,我决定使用用户服务帐户和 .p12 key 进行身份验证。效果很好,但所有文件都存储在服务帐户中,所以我无法管理它们。我希望将文档存储在某个帐户(用于创建 api 项目和服务帐户本身)。我试图使用此代码:
$KEY_FILE = <p12 key file path>;
$key = file_get_contents($KEY_FILE);
$auth = new Google_AssertionCredentials(
$SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/drive'),
$key);
$auth->prn = '<certainuser@gmail.com>';
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
return new Google_DriveService($client);
最佳答案
不要使用 $auth->prn,使用 $auth->sub。这对我有用:
// Create a new google client. We need this for all API access.
$client = new Google_Client();
$client->setApplicationName("Google Group Test");
$client_id = '...';
$service_account_name = '...';
$key_file_location = '...';
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
// https://www.googleapis.com/auth/admin.directory.group,
// https://www.googleapis.com/auth/admin.directory.group.readonly,
// https://www.googleapis.com/auth/admin.directory.group.member,
// https://www.googleapis.com/auth/admin.directory.group.member.readonly,
// https://www.googleapis.com/auth/apps.groups.settings,
// https://www.googleapis.com/auth/books
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array(
Google_Service_Groupssettings::APPS_GROUPS_SETTINGS,
Google_Service_Directory::ADMIN_DIRECTORY_GROUP,
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_READONLY,
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER,
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER_READONLY,
Google_Service_Books::BOOKS,
),
$key,
'notasecret'
);
//
// Very important step: the service account must also declare the
// identity (via email address) of a user with admin priviledges that
// it would like to masquerade as.
//
// See: http://stackoverflow.com/questions/22772725/trouble-making-authenticated-calls-to-google-api-via-oauth
//
$cred->sub = '...';
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
关于impersonation - 使用服务帐户模拟 Google 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241127/
我有一个 ASP.NET 应用程序,它要求用户使用基本身份验证使用他们的域帐户登录。用户可以进行选择,然后按下按钮。 在按下按钮后的某个时刻是这段代码:WindowsIdentity.Imperson
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在使用 google-api-php-client 0.6.1,我想知道有没有办法用服务帐户模拟具体用户?我的应用程序需要在其谷歌驱动器中存储一些文件。因此,我决定使用用户服务帐户和 .p12 k
我有一个由 IIS 托管的 Web 应用程序。它配置了表单例份验证和匿名身份验证,并且启用了模拟。应用程序池帐户是网络服务。匿名帐户是 Costa。 Costa 可以访问数据库。 NetworkSer
我想使用集成身份验证从 Web 部件访问 SQL 数据库。它应该使用 IIS 应用程序池标识。 默认情况下你会得到错误: System.Data.SqlClient.SqlException: Log
我有以下情况(大纲): 授权网络服务 此服务被调用并验证(通过执行给定的业务逻辑)用户是否有效。 自定义业务网络服务 这是为商业应用程序创建的一些网络服务,它在内部调用“授权网络服务”以验证调用商业网
在我的网站中,登录的用户可以更改他们的头像,这个过程包括将上传的图片保存到网站根目录中的文件夹中。 当我测试它时,我收到一个错误,我应该使用权限授予对该特定文件夹的访问权限。 我无法控制控制面板,控制
我正在编写一个类来处理在 asp.net、WCF 服务和 WinForms 应用程序中使用的模拟和委托(delegate)。 根据 MSDN , WindowsIdentity.GetCurrent(
我正在尝试编写一个返回 session 变量的网络服务。调用此 Web 服务的应用程序可以访问当前 session 的 session ID。 我尝试通过创建“ASPNet_SessionID”coo
这两行web.config代码有什么区别 1. 2. MyuserName 和 MyPassword 是我的 Windows 凭据。如果您将 IIS 设置为使用 Windows 凭据,则不应为“
我写了一个注册临时表的 Spark 作业 当我通过直线(JDBC客户端)公开它时 $ ./bin/beeline beeline> !connect jdbc:hive2://IP:10003 -n
我在我的 python GAE 应用程序上使用 AppAssertionCredentials 作为服务帐户进行身份验证。但是,这是一个通用服务帐户,我不知道如何授权它模拟我的 Google Apps
IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化。身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较
我想显示类似的东西: 案例一:“以用户身份登录” @ UserName [ logout ] 这里没有问题,我只是这样做: @ {{ app.user.username}} [ 注销 ] 案例2:“以
是否可以将浏览我的 ASP.NET Web 应用程序的用户的凭据传递给 EWS FindAppointments 调用? 我只是尝试返回事件浏览用户的日历详细信息,他们无疑有权读取自己的日历,因此该问
我可以使用通过网络服务请求授予的访问 token 访问网站管理员的 google API 网站列表,现在我想通过服务器到服务器请求来完成. 在授予服务器帐户访问列表的权限后,我无法使用以下范围正确使用
我正在尝试在网站中使用 WCF 命名管道,但失败并出现错误: There was no endpoint listening at net.pipe://localhost/mypipename th
我在 .NET Framework 4.0 程序集中有以下内容: var newId= new WindowsIdentity(duplicateTokenHandle); WindowsImpers
我们已将 ASP.NET Web 应用程序从 IIS6 升级到 IIS7 集成模式。我们的应用程序使用: 因此我们必须设置: 这是明智的吗?我的直觉说不是,但是在谷歌上搜索这个问题,在访问的每个页
我主要是在 Windows 上本地运行 hadoop 和 hive(没有 cygwin)。 对于 Hive,我所做的只是解压缩官方 zip 文件并设置 HIVE_HOME 和 PATH。另外,我将 h
我是一名优秀的程序员,十分优秀!