0

現在、Android アプリを GoogleCalendar のカレンダーに接続しようとしています。

しかし、呼び出しを認証する方法について完全に混乱しています。OAuth2.0でこれを行う必要があることは理解しています

しかし、私が正しく理解できる明確な例やチュートリアルはありません。ここに記載されている次の手順に従ってみました。

https://developers.google.com/google-apps/calendar/auth

しかし、私はおそらく非常に基本的なことで混乱し続けています。

私の質問はこれです。次の手順を理解し、サンプルコードを提供してくれる人はいますか?

ステップ 1: OAuth2.0 トークンをリクエストします。

ステップ 2: OAuth2.0 トークンを検証し、accessToken を取得する

ステップ 3: accessToken を使用し、実際に HTTPRequest 呼び出しを実行して、希望する JSON を取得します。

4

1 に答える 1

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()
  {
  }
}
  1. 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.ユーザーの電話番号で参照されている Google アカウントを検索します。

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 の使用に役立つことを願っています。追加のヘルプが必要な場合は、いつでもお問い合わせください!!

クッキー

于 2012-06-13T11:00:47.543 に答える