我需要这个,因为我已经在使用Agavi框架,如果我尝试集成Zend,事情会变得混乱.是否有相当于谷歌联系人的facebook-php sdk?
我仔细阅读了Google Contacts API文档,但我无法获得正确的PUT请求(即更新).我正在使用带有OAuth gem的Ruby on Rails 3.2(v0.4.5).我使用Omniauth获取令牌,范围定义为" https://www.google.com/m8/feeds "
让我来证明:
ruby-1.9.2-p290 :001 > @access_token.get("https://www.google.com/m8/feeds/contacts/default/full/c1f86b48b52548c", {"GData-Version" => "3.0"})
=> #<Net::HTTPOK 200 OK readbody=true>
Run Code Online (Sandbox Code Playgroud)
如您所见,GET请求运行良好,因此我的OAuth访问令牌应该没问题.DELETE请求也可以工作:
ruby-1.9.2-p290 :002 > @access_token.delete('https://www.google.com/m8/feeds/contacts/default/full/c1f86b48b52548c', { 'GData-Version' => '3.0', 'If-Match' => '"RH46fTVSLyt7I2A9Wx9VFkgMQAU."' })
=> #<Net::HTTPOK 200 OK readbody=true>
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.在这里,我按照Google的文档[1]中的说明在请求标题中提供了联系人条目的Etag.所以它不应该造成任何麻烦.
根据OAuth gem文档[2],PUT请求的语法应如下所示:
- (Object) put(path, body = '', headers = {})
Run Code Online (Sandbox Code Playgroud)
以及文档中的示例:
@token.put('/people/123', @person.to_xml, { 'Accept' => 'application/xml', 'Content-Type' => 'application/xml' })
Run Code Online (Sandbox Code Playgroud)
据我所知,我应该发送一个简单的XML字符串作为PUT请求的主体.所以让我们先获取一些示例数据:
ruby-1.9.2-p290 :003 > xmldata = @access_token.get("https://www.google.com/m8/feeds/contacts/default/full/5f74bf0d5c621a", {"GData-Version" => "3.0"}).body
=> "<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gContact='http://schemas.google.com/contact/2008' …
Run Code Online (Sandbox Code Playgroud) 我使用2.0版本的Contacts API和Gdata库来导入客户gmail信息.此版本不再受支持,我尝试移至V3,但我看到vd不支持Gdata,我花了一天试图修改当前代码以使用javascript的"Contacts API version 3.0".
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gmail Login</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
</head>
<body style="margin:0;padding:0;">
<img src="/images/templates.png" style="display:none;"/>
<script type="text/javascript">
google.load("gdata", "2.s");
google.setOnLoadCallback(function (){
if(window.location.hash=="") {
if(!checkLogin()){
logMeIn();
} else {
var feedUrl = "https://www.google.com/m8/feeds/contacts/default/full";
query = new google.gdata.contacts.ContactQuery(feedUrl);
query.setMaxResults(5000);
myService = new google.gdata.contacts.ContactsService('exampleCo-exampleApp-1.0');
myService.getContactFeed(query, function(result) {
document.cookie="g314-scope-0=";
window.opener.parseGmailContacts(result.feed.entry);
close();
}, function(e){
alert(e.cause ? e.cause.statusText : e.message);
});
}
}
});
function logMeIn() {
scope = "https://www.google.com/m8/feeds";
var token = google.accounts.user.login(scope);
}
function logMeOut() {
google.accounts.user.logout(); …
Run Code Online (Sandbox Code Playgroud) 我从 1.7 升级了我的 Google app Engine 应用程序。至 1.8。+ Java 7 和我将所有 API 库升级为最新。我在 GAE 容器中的应用程序初始化期间遇到奇怪的异常:
构造函数抛出异常;嵌套异常是java.lang.NoSuchMethodError:
java.lang.NoClassDefFoundError: Could not initialize class com.google.gdata.client.contacts.ContactsService
.
and this exception follows :
.
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;:
.
.
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219)
Run Code Online (Sandbox Code Playgroud)
“可疑”图书馆:
即使没有番石榴库,也会出现同样的错误。是什么原因导致这种不兼容呢?我没有找到更新版本的 gdata-contact API (1.47.1)。有任何想法吗 ?
google-app-engine google-api gdata google-contacts-api guava
我在检索用户的联系人图片时遇到了一个简单的问题.所以我提出要求
$url = 'https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=9999&oauth_token=' . $accessToken;
Run Code Online (Sandbox Code Playgroud)
然后我获得了巨大的JSON,我从中提取了全名和电子邮件.然后我尝试了联系人的形象,并没有取得任何成功.
我得到所有联系人,每个人都有以下结构:
entry [id, updated, category, title, link, gd$email].
Run Code Online (Sandbox Code Playgroud)
在链接部分,我有四个链接,其中前两个是图像内容的某种链接,但我无法检索它.
任何机构在做这种工作方面都取得了成功!
Tnx很多!
顺便说一句:如果我的案例中缺少一些数据,请报告,我也会添加!
编辑:我也试图用URL访问图像
http://profiles.google.com/s2/photos/profile/" + userid + "?sz=" + size;
Run Code Online (Sandbox Code Playgroud)
但问题是我无法从联系人JSON获取userId.
我似乎无法使用查询参数搜索Google通讯录.
我可以成功验证用户身份,获取联系人组列表,并获取组内联系人列表,但无法进行搜索.
从文档中,我假设我的URI必须看起来像这样在默认用户的联系人中搜索"tracy"(假设我已经通过OAuth2进行了身份验证):
但是,我得到一个"错误请求"响应(_rc = 400)
我想我可以下载所有联系人然后自己进行搜索,但我无法想象GOOGLE(!)无法在服务器上进行搜索.
任何帮助非常感谢!谢谢!
我正在用C#编写桌面应用程序,该应用程序应该能够访问Google Apps"帐户"上的所有用户和每个用户的检索日历事件.我已将Calendar API和Admin SDK添加到我的"项目"中.
这两种方法(下面)都可以自行运行,但是当我想为两个API授权我的应用程序时,我收到以下权限错误.
许可不足[403]
invalid_grant",描述:"令牌已被撤销.
这让我想知道在应用程序启动时是否可以请求所有权限,而不是单独授权"功能"?
static string[] CalendarScopes = {CalendarService.Scope.CalendarReadonly };
static string[] DirectoryScopes = { DirectoryService.Scope.AdminDirectoryUserReadonly };
private static void GoogleCalendar()
{
UserCredential credential;
using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
string credPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
CalendarScopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define parameters of …
Run Code Online (Sandbox Code Playgroud) 由于Google停止了对旧版Auth的支持,现在我们必须使用oAuth 2,我们的简单桌面应用程序无法再从我的Google帐户中读取联系人.
很好 - 我理解这一点,但是这个新的oAuth 2非常复杂......我不是从开发人员的角度来谈论.从我在线阅读.我们现在必须让我们的客户跳过众多的箍,以便我们的简单应用程序读取存储在他们的Google邮件/联系人中的联系人.
我的iPhone似乎只能使用我一年前输入的典型电子邮件和密码来同步联系人.他们如何让它发挥作用?然而,通过我简单的桌面应用程序,客户端必须在谷歌开发者网站上搜索并使用API设置等.我是开发人员,我很困惑! - 你能想象我的客户会经历什么......它不能复杂化.
有没有人可以给我简单的1,2,3让C#桌面应用程序关闭并从特定的Gmail帐户获取联系人(只读)... 最少的摆弄(为Gmail帐户的所有者).
我会完成应用程序中的所有艰苦工作 - 我只是不希望客户端花费一个小时来授权和创建API并在开发人员站点中点击(他/她不是开发人员).
我正在使用Google API来获取用户的日历活动和联系人.
在获取联系人时,我以下列方式得到答复: -
[
{
'phones': [],
'image_path': '',
'id': 'ID',
'emails': ['email1'],
'name': ABC
},
{
'phones': [],
'image_path': '',
'id': 'ID',
'emails': ['email2'],
'name': DEF
}
]
Run Code Online (Sandbox Code Playgroud)
在获取事件时,我得到了以下响应: -
[
{
'attendees': [{
'organizer': True,
'displayName': 'ABC',
'id': 'Google+ Id',
'responseStatus': 'accepted'
}, {
'self': True,
'displayName': 'DEF',
'id': 'Google+ id',
'responseStatus': 'accepted'
}],
'organizer': {
'displayName': 'ABC',
'id': 'Google+ id'
},
'creator': {
'displayName': 'ABC',
'id': 'Google+ id'
},
},
{
'organizer': {
'self': True,
'displayName': …
Run Code Online (Sandbox Code Playgroud) 我想为网页开发一个“添加到联系人”按钮,就像您在网络研讨会和活动页面上看到的“添加到日历-Google,ICal,Outlook”类型的按钮一样。
我开始使用它来调查Google通讯录。我开始构建一个表单,将应用程序/ atom + xml提交到他们在帮助文件中讨论的URL 以及Google on Stack的类似问题。
我认为创建此服务是对社区的一种类似于开源的服务,在我进行修补时会得到一些专家帮助。我在这里要求这项贡献。
我的粗糙代码不起作用
函数SendToGoogle(){ var url =“ https://www.google.com/m8/feeds/contacts/default/full”; var data = contactData(); 警报(数据); / * $ .post(网址,数据,功能(数据,状态){ alert(“ Data:” + data +“ \ nStatus:” + status); }); * / $ .ajax({type:“ POST”, 网址:网址, dataType:“ xml”, contentType:“应用程序/ atom + xml”, 快取:false, 异步:是的, crossDomain:是的, 成功:功能(数据,状态){ alert(“数据:” +数据+“ \ n状态:” +状态)} }) } //结束SendToGoogle 函数contactData(){ return'Elizabeth Bennet Elizabeth Bennet Notes (206)555-1212 (206)555-1213 Mountain View 1600 Amphitheatre Pkwy CA 94043 United …
google-api ×5
c# ×2
gdata ×2
javascript ×2
addressbook ×1
google-apps ×1
google-oauth ×1
guava ×1
oauth ×1
outlook ×1
php ×1
xml ×1