我正在编写一个PHP应用程序,它应该允许用户将某些事件添加到私人Google日历中.日历由我拥有,我需要一种方法让PHP使用固定凭据与日历API进行通信(每个人都可以使用网站上的表单添加事件,但日历本身不公开).
根据我的阅读,可以在v1 API中使用ClientLogin.但是,在v3 API中,可用选项是OAuth2.0或API密钥.使用API密钥似乎不起作用,因为它只能用于不需要授权的请求,而OAuth似乎也不正确,因为用户不应该访问他们自己的日历,而是我的日历应用程序使用
我考虑以编程方式获取OAuth令牌,但由于OAuth对话框可以使用验证码,因此迟早会中断.
这似乎是一个标准的用例 - 一个允许用户以某种预定义的方式与单个日历交互的Web应用程序 - 但我找不到任何关于如何在v3 API中实现它的文档.谁能帮我?
php google-calendar-api google-api google-api-php-client google-oauth2
我一直在阅读文档并在https://glass-java-starter-demo.appspot.com/上播放,但似乎没有办法进一步调查,因为它遵循https://developers.google的说明.我的https://code.google.com/apis/console/上的com/glass/playground未显示Google Mirror开关.有没有解决方法?
从Google Spreadsheets API上的Google Developer 文档开始,我发现"许多客户端库都以各种语言提供.",但Google仅提供Java和.NET的客户端库.对于PHP库,他们建议使用Zend GData.因此,我领导了Zend GData回购,Zend表示他们的GData组件已停产,并使用Google API Client Library for PHP.该库不适用于Spreadsheets API,因为您必须返回到我开始使用的原始页面.
所以,似乎每个人都在推卸责任.我只需要编写一些PHP代码来请求和处理来自Google电子表格的数据.我怎么做?请不要将我链接到类似的帖子或页面而不检查以确保它们是100%最新的,我一直在筛选大量的帖子几个小时,这些帖子都是过时的和已弃用的依赖项.
我收到错误SecurityException: Not allowed to start service Intent但看起来在搜索了很多主题后没有很好的解决方案.
请帮我,
谢谢,
p/s:
我确保使用正确,SENDER_ID因为项目编号定义Google API Console并且正确package name.
错误:
Caused by: java.lang.SecurityException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gms (has extras) } without permission com.google.android.c2dm.permission.RECEIVE
at android.app.ContextImpl.startServiceAsUser(ContextImpl.java:1785)
at android.app.ContextImpl.startService(ContextImpl.java:1757)
at android.content.ContextWrapper.startService(ContextWrapper.java:480)
at com.google.android.gms.gcm.GoogleCloudMessaging.e(Unknown Source)
at com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source)
at controller.RegisterGCMClientAsync.doInBackground(RegisterGCMClientAsync.java:62)
at controller.RegisterGCMClientAsync.doInBackground(RegisterGCMClientAsync.java:18)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Run Code Online (Sandbox Code Playgroud)
Manifest.xml文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.cloudstringers" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > …Run Code Online (Sandbox Code Playgroud) android google-api android-intent google-api-client google-cloud-messaging
我已经设置了一个简单的测试应用程序来与Google的Natural Language API进行交互.我创建了一个服务帐户,并下载了JSON凭据.我在本地开发机器上运行,所以我将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为指向JSON文件.为了清楚起见,这可行:应用程序成功进行一些API调用并显示结果.
我想删除对环境变量的依赖.如何在应用程序中使用JSON文件(或任何其他方法)的已知位置来创建LanguageServiceClient具有这些凭据的文件?
有人知道如果通过java中的google api,我可以通过编程方式创建谷歌帐户.
我正在尝试获取访问令牌以使用Google Play Android Developer API,而且我使用Google API Java客户端文档示例了解到这一点:
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("...gserviceaccount.com")
.setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
.setServiceAccountPrivateKeyFromP12File(keyFile)
.build();
Run Code Online (Sandbox Code Playgroud)
但是如何从此凭据获取访问令牌?credential.getAccessToken()回报null.我做错了什么,或者错过了一些步骤?

它显示"项目默认服务帐户"而不是我的项目名称,我在谷歌的控制台上看到了项目名称,但是在项目名称附带的给定凭据的权限页面上我看到了标题,很奇怪,任何人都知道如何更改那?
我想在javascript中从谷歌获取日历信息.我读过"如何"手册.他们没有帮助.即使这种"有用的"复制代码(授权)也没有.有人会这么好教我如何使用谷歌API?也许某人有一些样本要分享
这个美丽的js代码:
<html>
<button id="authorize-button" onclick='handleAuthClick()'>Authorize</button>
<script type="text/javascript">
var clientId = '***';
var apiKey = '***';
var scopes = 'https://www.googleapis.com/auth/plus.me';
function handleClientLoad() {
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
}
function handleAuthResult(authResult) {
var authorizeButton = document.getElementById('authorize-button');
if (authResult && !authResult.error) {
authorizeButton.style.visibility = 'hidden';
makeApiCall();
} else {
authorizeButton.style.visibility = '';
authorizeButton.onclick = handleAuthClick;
}
}
function handleAuthClick(event) {
// Step 3: get authorization to use private data
gapi.auth.authorize({client_id: clientId, scope: scopes, …Run Code Online (Sandbox Code Playgroud) 我使用谷歌登录JavaScript客户端几个月没有问题.但最近当用户点击添加到主屏幕的webapp登录按钮时,登录弹出窗口只是挂起而没有显示任何内容.
通过远程调试进行调试时,控制台窗格中会显示错误:
Uncaught Failed to get parent origin from URL hash!
Run Code Online (Sandbox Code Playgroud)
源自4188232449-v2-idpiframe.js:136(由谷歌库内部加载的javascript).
我确定这不是编程/配置错误,因为同一个webapp以前工作了几个月没有问题,我没有修改任何代码.
我已尝试谷歌搜索此特定问题并浏览Google文档,了解Google登录API中的任何最新更改,但没有任何运气.
它是来自Google API Javascript客户端库的错误,来自Android上最近的Chrome浏览器更新的故障,还是我还不知道API使用方面的一些变化?
使用的库是https://apis.google.com/js/platform.js
这是gapi.auth2.init()的init参数:
{
client_id: GAPI_CID, // defined as constant
cookiepolicy: 'single_host_origin',
prompt: 'select_account',
ux_mode: 'popup',
fetch_basic_profile: true
}
Run Code Online (Sandbox Code Playgroud)
任何见解都将非常感激.谢谢.
PS:此问题与Uncaught不同,无法从URL哈希获取父源,因为在这种情况下,问题是由于 Google API控制台中所需凭据配置错误导致的.如果您从来没有成功将登录流程与您的应用程序集成,那么该帖子的回答可能会对您有所帮助.
否则,如果您已成功整合登录流程一段时间,但最近出现问题突然/不规律地出现在弹出窗口的空白屏幕症状,而不是您遇到同样的问题.
google-api ×10
java ×2
javascript ×2
php ×2
access-token ×1
android ×1
credentials ×1
google-glass ×1
oauth ×1
oauth-2.0 ×1