我目前正在尝试将我的Android应用与GoogleCalendar中的某些日历相关联。
但我对如何验证通话完全感到困惑。 我明白我必须用OAuth2.0
这样做但是没有明确的例子或教程我可以遵循/理解正确。 我尝试按照以下步骤进行操作:
https://developers.google.com/google-apps/calendar/auth
但我一直对这些基础知识感到困惑。
我的问题是这个。谁能帮助我理解以下步骤并提供一些示例代码?
第1步:请求OAuth2.0令牌。
步骤2:验证OAuth2.0令牌并检索accessToken
步骤3:使用accessToken并实际执行HTTPRequest调用,该调用为我提供了我想要的JSON。
答案 0 :(得分:0)
您的问题是最新的还是您已经解决了问题?
编辑:
这里有一些基本信息如何实现GoogleCalendar:
1.创建一个类来处理日历:
public class MyCalendar
{
private static final String AUTH_TOKEN_TYPE = "cl";
public static final String KEY = "YOUR_API_KEY"; //You can find below Simple API Access at GoogleApiConsole
final HttpTransport transport = AndroidHttp.newCompatibleTransport();
final JsonFactory factory = new GsonFactory();
GoogleAccountManager accountManager;
String name;
String token;
public com.google.api.services.calendar.Calendar mycalendar;
private HttpRequestInitializer initializer = new HttpRequestInitializer()
{
public void initialize(HttpRequest request) throws IOException
{
request.getHeaders().setAuthorization(GoogleHeaders.getGoogleLoginValue(authToken));
}
};
public MyCalendar()
{
}
}
创建一个Calendar对象(我在MyCalendar的构造函数中执行此操作
mycalendar = com.google.api.services.calendar.Calendar.builder(transport,jsonFactory)
.setApplicationName("CHOOSE_A_APPNAME")
.setHttpRequestInitializer(initializer)
.setJsonHttpRequestInitializer(new GoogleKeyInitializer(KEY))
.build();
accountManager = new GoogleAccountManager(TimetableApplication.getInstance().getActivity());
findGoogleAcc();
初始化程序的初始化方法[;-)]稍后会调用,如果你想访问你的日历。
2.搜索GoogleAccount是指用户的手机
void findGoogleAcc()
{
Account account = accountManager.getAccountByName(name);
if(account == null)
{
//Handle wrong name, or if user connect more than one accounts to phone
}
if(token != null)
{
//you already got your token for user's account and these method is not necessary
}
accountManager.getAccountManager().getAuthToken(account, AUTH_TOKEN_TYPE, true, new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> future)
{
try
{
Bundle bundle = future.getResult();
if(bundle.containsKey(AccountManager.KEY_INTENT))
{
// Allow app to connect to googleaccount
Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);
intent.setFlags(intent.getFlags() & ~ Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivityForResult(intent, 0);
}
else
if(bundle.containsKey(AccountManager.KEY_AUTHTOKEN))
{
this.authToken = authToken;
gotSmthFromCalendar();
}
}
catch(Exception e)
{
}
}
}, null);
}
3.在方法:
上使用您的日历 void gotSmthFromCalendar()
{
//Here u can do whatever u want.
}
我认为在gotSmthFromCalendar()上你应该使用AsyncTask来重新排列数据。例如,你可以这样做:
List<CalendarListEntry> calendarList = mycalendar.calendarList().list().execute().getItems();
for(CalendarListEntry calendarEntry : calendarList)
{
String summary = calendarEntry.getSummary();
String id = calendarEntry.getId();
Log.v("Calendar","Found a calendar with summary : " + summary + " an id: " + id);
}
希望这些基础知识可以帮助您使用v3。如果你需要额外的帮助,请每次问我!!
Kooki