web-dev-qa-db-ja.com

Googleの「シンプルAPIアクセスキー」を使用してGoogleカレンダー情報(PHP)にアクセスするにはどうすればよいですか?

私はGoogle API v3を使用して1つのgoogleカレンダーにアクセスしようとしていますが、ここのドキュメントに従っています http://code.google.com/apis/calendar/v3/using.html#intro そしてここ: https://code.google.com/apis/console/ 、私が必要とするソリューションは「シンプルなAPIアクセス」と「サーバーアプリのキー(IPロック付き)」です。

今、私はこのコードでページを作成すると:

session_start();

require_once 'fnc/google-api-php-client/src/apiClient.php';
require_once 'fnc/google-api-php-client/src/contrib/apiCalendarService.php';

$apiClient = new apiClient();
$apiClient->setUseObjects(true);
$service = new apiCalendarService($apiClient);

if (isset($_SESSION['oauth_access_token'])) {$apiClient->setAccessToken($_SESSION['oauth_access_token']);
} else {
    $token = $apiClient->authenticate();
    $_SESSION['oauth_access_token'] = $token;
}

私の「config.php」ファイルには、開発者キー(「X」の代わりに)のみを追加します。

global $apiConfig;
$apiConfig = array(
    // True if objects should be returned by the service classes.
    // False if associative arrays should be returned (default behavior).
    'use_objects' => false,

    // The application_name is included in the User-Agent HTTP header.
    'application_name' => '',

    // OAuth2 Settings, you can get these keys at https://code.google.com/apis/console
    'oauth2_client_id' => '',
    'oauth2_client_secret' => '',
    'oauth2_redirect_uri' => '',    

    // The developer key, you get this at https://code.google.com/apis/console
    'developer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

    // OAuth1 Settings.
    // If you're using the apiOAuth auth class, it will use these values for the oauth consumer key and secret.
    // See http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html for info on how to obtain those
    'oauth_consumer_key'    => 'anonymous',
    'oauth_consumer_secret' => 'anonymous',

しかし、エラーが発生し、使用したくない「OAuth 2.0」システムを使用して認証しようとしていることがわかります。 APIキーで1つのカレンダーのみにアクセスしたい。

そして驚くべきことに、Googleの「Simple API Access key」で検索すると、ドキュメント、サンプル、チュートリアル、何も見つかりません。これを使っているのは私だけですか?

だから誰かが私が間違っていることを教えてもらえますか?

16
Joel

(私はこれが古い質問であることを知っていますが、誰かが本当の答えをここにくれれば私は喜んでいたので、私は今それをやっています)


私は同じ問題に遭遇しました、単純なAPIアクセスは十分に文書化されていません(またはおそらく私が検索した場所だけではありません) Google API Explorer を使用して、必要なものを取得する方法を見つけました事実は非常に簡単です。 特定のlibなどは必要ありません。実際には非常に簡単です。

私の場合、G +でキーワードを検索する必要があるだけなので、GETリクエストを実行する必要がありました。

https://www.googleapis.com/plus/v1/activities?query={KEYWORD}&key={YOUR_API_KEY}

ここで、カレンダーアクセス( ここを参照 )のために、アクセス制御規則リストをフェッチしたいとしましょう。 URIを提供する calendar.acl.list を参照する必要があります。

https://www.googleapis.com/calendar/v3/calendars/{CALENDAR_ID}/acl?key={YOUR_API_KEY}

空白を埋めてください、そしてそれはあなたがする必要があるほとんどすべてです。 サーバーキー (APIアクセスサブメニュー)を取得し、プロジェクトのどこかに保存して、要求しているURI内で呼び出します。

5
tsadiq

APIキーを使用してカレンダー情報にアクセスすることはできません。 APIキー(または単純なAPIアクセスキー)は承認されたトークンではなく、Google検索クエリなどの一部のAPI呼び出しでのみ使用できます。 APIキーでは、ユーザー固有のデータにアクセスできません。これは、このカレンダーアプリケーションを使用することを目的としています。

また、コードに表示されている内容から、OAuth 2.0認証を使用するクライアントオブジェクトを作成しているため、認証エラーメッセージが表示されます。

3
Antony Thomas

Simple API Access keyというものはありません。

通常OAuth 2.0は認証に使用されますが、使用しない理由があるためです。

  • 承認にOAuth1.0を使用する場合。 API Access ページのAPI keyセクションにSimple API Accessが必要です。
  • OAuthの代わりにユーザー名とパスワードのログインを使用する場合は、 ClientLogin を参照できますが、これはお勧めできません。
1
Rannnn

今日同じことをしようとしたときにこのスレッドにたどり着きました。これはかなり遅いですが答えはYESですが、実際にはユーザー認証を必要としないAPIのためのシンプルなAPIキーがあり、公式のクライアントライブラリがこれをサポートしています。

APIライブラリは、キーと値のペアであるオプションによってこれを行います。

特定のyoutubeビデオの情報を取得する例をとると、次のAPIを使用します: https://godoc.org/google.golang.org/api/youtube/v3#VideosListCall.Do

APIキーを使用するには、CallOptionインターフェースを実装するタイプを作成し、APIキーを返すようにします。

type APIKey struct {
}

func (k *APIKey) Get() (string, string) {
    return "key", "YOU API KEY HERE"
}

次に、APIを呼び出すときに、APIKeyをAPIに提供します。

youtube, err := youtube.New(&http.Client{})
call := youtube.Videos.List("snippet,contentDetails,statistics").Id(id)
rsp, err := call.Do(opt)

このように、oauthクライアントではなく、vallina httpクライアントを使用してyoutubeクライアントを構築し、シンプルなapiキーを楽しむことができます。

最初の答えは、http GETを直接使用できると述べましたが、その後、エラーを処理し、結果を自分で解析する必要があります。

0
fluter