我正在使用谷歌日历java API进行项目.
日历部分很好,maven似乎下载并使用它没有任何麻烦.
我的问题来自这个lib的主要依赖:com.google.api.client api.
特别是,当我按照本页详述的说明操作时,maven无法正确编译我的项目:
package com.google.api.client.extensions.java6.auth.oauth2 does not exist
package com.google.api.client.extensions.jetty.auth.oauth2 does not exist
package com.google.api.client.json.jackson2 does not exist
Run Code Online (Sandbox Code Playgroud)
它缺少几个类,因此无法编译文件,而当我下载zip并手动添加.jar而不使用maven它工作正常.
这是我用maven管理的第一个项目,不知道如何去那里.指针将不胜感激.
编辑发帖请求---这是我的POM
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.univnantes.atal.atcal</groupId>
<artifactId>AtCal</artifactId>
<version>0.1</version>
<packaging>jar</packaging>
<name>AtCal</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>google-api-services</id>
<url>http://google-api-client-libraries.appspot.com/mavenrepo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.12.0-beta</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev20-1.12.0-beta</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- best lock down version of the plugin too …Run Code Online (Sandbox Code Playgroud) 我正在尝试为域中的用户检索日历事件.我有服务帐户访问权限,但在尝试获取特定用户事件时出现404错误.继承人连接代码:
NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(googleApiServiceAccountId)
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR_READONLY))
.setServiceAccountPrivateKey(SecurityUtils.loadPrivateKeyFromKeyStore(
SecurityUtils.getPkcs12KeyStore(),
getClass().getClassLoader().getResourceAsStream(googleApiPrivateKeyPath),
NOTASECRET, PRIVATEKEY, NOTASECRET))
.build();
calendarApi = new Calendar.Builder(httpTransport,
JSON_FACTORY, credential).setApplicationName(getApplicactionName()).build();
Run Code Online (Sandbox Code Playgroud)
活动列表方法:
public List<Event> getCalendarEventsForUserAndDates(String userEmail, Long dateFrom, Long dateTo) {
try {
String pageToken = null;
List<Event> allEvents = Lists.newArrayList();
do {
ArrayMap<String, Object> parameters = new ArrayMap<String, Object>();
parameters.add("xoauth_requestor_id", userEmail);
Calendar.Events.List list = calendarApiBean.getCalendarApi()
.events().list("primary");
list.setTimeMax(new DateTime(dateFrom, 0))
.setTimeMin(new DateTime(dateTo, 0))
.setUnknownKeys(parameters);
Events events = list.setPageToken(pageToken)
.execute();
List<? extends Event> items = …Run Code Online (Sandbox Code Playgroud) 我们遇到了包含两条腿OAuth的Gmail原子Feed问题,错误消息是"401未经授权".
错误消息如下所示.
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
直到上周,我们使用Gmail原子Feed都没有问题.从本周开始,即使我们对Gmail原子Feed和oauth没有任何变化,我们也遇到了这个问题.现在,所有用户(50,000个帐户)都不会出现此问题,但此问题越来越多.
看来这个问题是由谷歌方面引起的.
有没有人有同样的问题?
源代码如下.
private GoogleOAuthParameters mOauthParameters;
private OAuthSigner mSigner;
private final String SCOPE = "https://mail.google.com/mail/feed/atom";
GoogleService service;
String result = null;
mOauthParameters = new GoogleOAuthParameters();
mSigner = new OAuthHmacSha1Signer();
mOauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
mOauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
service = new GoogleService("gmail","feed");
service.setOAuthCredentials(mOauthParameters, mSigner);
service.setConnectTimeout(timeOut);
service.setReadTimeout(timeOut * 5);
GDataRequest request = service.createFeedRequest(new URL(SCOPE +"?xoauth_requestor_id=" + email));
request.execute();
InputStream is = null;
try {
is = request.getResponseStream();
StringBuffer out = new StringBuffer();
byte[] …Run Code Online (Sandbox Code Playgroud) gmail google-api google-api-java-client google-oauth google-oauth-java-client
我的目标是通过首先检索活动实例列表来测试google的orchestrator和计算引擎api.包含servlet文件的orchestrator项目存储在jar中.
我正在尝试测试java google计算引擎客户端api.我有一个调用orchestrator servlet的cron作业.cron的目标是后端.我从中尝试获取实例列表:
...
AppIdentityCredential credential = getCredential(computeScope);
String appName = ConfigProperties.getInstance().getGceConfigProperties().get("projectId");
try {
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
final Compute compute = new Compute.Builder(
httpTransport, JSON_FACTORY, credential).setApplicationName(appName)
.build();
logger.info("================== Listing Compute Engine Instances ==================");
Compute.Instances.List instances = compute.instances().list(projectId, zone);
InstanceList list = instances.execute();
if (list.getItems() == null) {
logger.info("No instances found. Sign in to the Google APIs Console and create "
+ "an instance at: code.google.com/apis/console");
} else {
for (Instance instance : list.getItems()) {
logger.info(instance.toPrettyString());
}
}
...
Run Code Online (Sandbox Code Playgroud)
我得到的错误响应是(我从响应中省略了我的项目名称,我确认我在我的代码中使用了正确的项目ID): …
google-app-engine google-api-java-client google-compute-engine
我在Openshift上部署了Web服务。目前,我正在开发一种使用我的Gmail帐户在特定时间发送自动电子邮件的方法。
因此,我已经记录了自己两到三天,得出的结论是我有两个选择:
1)使用JavaMail库。2)使用Gmail API。
对于第一个选项,我使用了以下类:
public class EmailSenderService {
private final Properties properties = new Properties();
private String password = "*******";
private Session session;
private void init() {
//ssl
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.port", "465");
session = Session.getDefaultInstance(properties,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("eu***@gmail.com",password);
}
});
}
public void sendEmail(){
init();
//ssl
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("eu***@gmail.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("c***6@gmail.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +
"\n\n No spam …Run Code Online (Sandbox Code Playgroud) email jakarta-mail google-api-java-client google-oauth gmail-api
我正在尝试构建一个简单的Java代码,使用Google QPX API获取从纽约到伦敦的航班.我注册了Google并获得了API_key.
我阅读了文档,但不幸的是,我找不到任何能告诉我如何操作的例子.
这是我到目前为止所尝试的:
import com.google.api.services.qpxExpress.model.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
// Passengers
PassengerCounts passengers = new PassengerCounts();
passengers.setAdultCount(2);
// Slice
List<SliceInput> slices = new ArrayList<SliceInput>();
SliceInput slice = new SliceInput();
slice.setOrigin("JFK"); // John Kennedy Airport in Ney York
slice.setDestination("LHR"); // London Heathrow
slice.setDate("2015-07-01");
slices.add(slice);
// Options request
TripOptionsRequest tripOptions = new TripOptionsRequest();
tripOptions.setPassengers(passengers);
tripOptions.setSlice(slices);
// Search request
TripsSearchRequest tripSearchReq = new TripsSearchRequest();
tripSearchReq.setRequest(tripOptions);
// Next steps?
// Setting up QPXExpress?
} …Run Code Online (Sandbox Code Playgroud) 我正在批量请求将成员添加到组.为此,我使用OAuth2.0并获取类类型Credential的对象.执行时,batch.execute()抛出一个
java.net.SocketTimeoutException : Read timed out
Run Code Online (Sandbox Code Playgroud)
要更改超时限制,这是我找到的解决方案: GoogleApps客户端仅提供SocketTimeOutException
但我无法更改我正在创建的Credential对象的超时.
Credential credential = new AuthorizationCodeInstalledApp(
flow, new LocalServerReceiver()).authorize("user");
Run Code Online (Sandbox Code Playgroud)
注意:凭据实现HttpRequestInitializer.
提前致谢!
java google-api-java-client google-admin-sdk google-directory-api
我正在使用 Google API Java 客户端http://code.google.com/p/google-api-java-client/并且能够成功获取 Android 的访问令牌。
// Google Accounts
credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);
SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
Run Code Online (Sandbox Code Playgroud)
由于我希望我的 Web 服务器进行离线 API 调用,因此我需要一个刷新令牌。我一直在广泛搜索,但还没有想出如何做到这一点。
理想情况下,我更喜欢在 WebView 上使用 Google API Java 客户端来获取刷新令牌(无需输入用户名或密码)。
任何帮助,将不胜感激!
google-api-java-client google-oauth google-oauth-java-client
我正在使用 YouTube API 以编程方式将视频上传到 YouTube。我的一些视频需要标记年龄限制,所以我想指定 AgeGating 视频属性。当指定 video.setAgeGating(gating) 时,还必须提供适当的部分名称,否则我会收到以下错误
{
"code" : 400,
"errors" : [ {
"domain" : "youtube.part",
"location" : "part",
"locationType" : "parameter",
"message" : "ageGating",
"reason" : "unexpectedPart"
} ],
"message" : "ageGating"
}
Run Code Online (Sandbox Code Playgroud)
该文件指出以下可用的部分:
片段、内容详细信息、文件详细信息、实时流媒体详细信息、播放器、处理详细信息、录制详细信息、统计信息、状态、建议和主题详细信息。
在我的情况下,它们都不起作用,仍然返回相同的unexpectedPart错误消息,因此我尝试了自定义ageGating部件名称,尽管这次响应是:
{
"code" : 403,
"errors" : [ {
"domain" : "youtube.common",
"message" : "Forbidden",
"reason" : "forbidden"
} ],
"message" : "Forbidden"
}
Run Code Online (Sandbox Code Playgroud)
YouTube API 错误文档页面中未列出此错误类型。
这是我的代码示例:
Video videoMetadata = …Run Code Online (Sandbox Code Playgroud) 我在 java web 应用程序中使用以下代码来尝试获取组的所有用户:
GoogleCredential credential = GoogleCredential.fromStream(Util.class.getResourceAsStream("[credential_file].json")).createScoped(SCOPES);
Directory directory = new Directory.Builder(httpTransport, JSON_FACTORY, credential).build();
Directory.Members dirMem = directory.members();
Members members = dirMem.list("[group_email]").execute();
Run Code Online (Sandbox Code Playgroud)
这会导致最后一行 ( dirMem.list...)出现异常 403(未授权访问此资源/API )。
从文档(https://developers.google.com/admin-sdk/directory/v1/guides/delegation)和其他帖子中,我看到解决方案是使用setServiceAccountUser(). 但是,这意味着我必须使用 p12 文件而不是 json 文件(Google 建议在创建密钥时使用 json 文件)。
有什么办法可以在仍然使用 json 文件的同时解决这个问题(它还涉及更少的代码)。
谢谢。
google-api google-api-java-client google-oauth google-admin-sdk
google-oauth ×4
google-api ×3
java ×3
api ×2
email ×1
gmail ×1
gmail-api ×1
httprequest ×1
jakarta-mail ×1
maven ×1
video ×1
youtube ×1
youtube-api ×1