問題タブ [google-mirror-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-mirror-api - ミラー API サブスクリプションをテストする方法
https callbackUrl の制限とサブスクリプション全体の性質により、これはパブリックにアクセスできる URL でのみ実行できるように思えます。
これまでのところ、ローカルでの開発とデバッグを容易にする 2 つの解決策を見つけました。
1 つ目は、Google が提供するサブスクリプション プロキシサービスです。この回避策により、基本的に、カスタム URL への SSL 制限とプロキシ サブスクリプション コールバックを削除できます。
開発をローカルで行うために私が見つけた 2 番目の最も役立つ方法は、サブスクリプションのコールバック要求 (パブリックにアクセス可能なサーバーからなど) をログにキャプチャし、curl を使用してローカル/開発マシンでその要求を次のような方法で再現することです。 :
リクエストが大きくなる場合や、複数のコールバック タイプをテストする場合があるため、添え字リクエストの JSON をさまざまなファイル (例: timeline-respond.json
) に入れてから実行すると便利であることがわかりました。
アプリケーションのサブスクリプションをローカルでテストするために、他の人が何をしているのか気になります。
perl - refresh_token 無効な認証情報エラー
私は困惑しています。Perl を使用してミラー API でアクセス トークンをロードするために更新トークンを手動で取得しようとしていますが、資格情報エラーが発生し続けます。PHP のサンプル コードで正確な HTTP 要求を読み込むと (比較のために HTTP を出力しました)、同じ refresh_token が正常に機能します。
私のPerl HTTPリクエストは次のとおりです。
*POST https://accounts.google.com/o/oauth2/token Host: accounts.google.com User-Agent: libwww-perl/6.02 Content-Length: 175 Content-Type: application/x-www-form- urlencoded client_id=client_id_goes_here&client_secret=client_secret_goes_here&refresh_token=refresh_token_goes_here&grant_type=refresh_token*
同じ refresh_token の PHP は次のとおりです。
*POST /o/oauth2/token HTTP/1.1 content-type: application/x-www-form-urlencoded content-length: 175 client_id=client_id_goes_here&client_secret=client_secret_goes_here&refresh_token=refresh_token_goes_here&grant_type=refresh_token*
私のPerlは次のようになります。
ヘルプ!:-)
python - トークンを更新しようとすると、invalid_grant が取得される
OAuth2Credential オブジェクトが access_token を更新しようとすると、invalid_grant のエラーが発生し、更新できなくなることがあります。私が使用したコードは、Google の python API と Mirror API の例に基づいています。
バックグラウンド:
oauth2client
認証用のモジュールと OAuth2Credential オブジェクトを使用します。- OAuth2Credential オブジェクトを pickle 化して base64 化して、Google 独自のサンプル コードのようにデータベースに格納する
- モジュールを使用
apiclient
してミラー API を呼び出す - このコードは 3 つの異なるサーバーで実行され、送信しようとするとすべて同じ問題が発生します。
- 私が求めるスコープは
"https://www.googleapis.com/auth/glass.timeline"
、"https://www.googleapis.com/auth/userinfo.profile"
- access_type が「offline」に設定されていることを確認できます
- 念のため、approval_prompt は「強制」でお願いします
ミラー API を呼び出すために使用されているコードは次のとおりです。
サービスが呼び出されると、access_token を更新する必要があることを意味する 401 が発行される可能性があります。次に、エラーinvalid_grantを伴う AccessTokenRefreshError を除く refresh メソッドを呼び出します。この時点では、access_token の有効期限が切れており、refresh_token で同じエラーが発生するだけなので、資格情報は問題ありません。
これは NTP の問題が原因で発生する可能性があると書かれているページを見たことがありますが、サーバーが同期していることを確認しました (さらに NTP サーバーを切り替えました)。文書化された他の可能性は、リサイクルされる前に 25 個のリフレッシュ トークンしか存在できないというものですが、Credential オブジェクトに store() メソッドを実装したので、リフレッシュすると新しい資格情報が所定の位置に保存されます (これが機能することを確認できます)。データベースを更新すると、データベースに新しい情報が表示されるため)。
この問題をオンデマンドで表示し始めるためのユーザーの資格情報を取得できないため、「しばらく待つ」以外に問題を再現するための条件を説明することはできません。この問題は、1 回の通話を認証して送信した直後から、100 回の通話を行ってから 1 週間後に発生することを確認しています。
今のところ問題を解決する唯一の方法は、ユーザーに再認証を依頼することですが、ユーザーの操作なしで API のオフラインを使用することを期待しているため、それは解決策ではありません。また、再認証が必要であることをユーザーに通知する方法もありません。
google-mirror-api - New York Times は、Glass タイムライン カードの「ちょうど今」の時間インジケーターの横にアイコンを表示する方法を教えてください。
私は Google Glass アプリを作成していますが、New York Times の小さな New York Times アイコンが、各カードの右下にある "Just Now" 時間インジケーターの右側にあることに気付きました。彼らはこれをどのように行っていますか?これは API コンソールでアップロードできるものですか、それとも各 HTML ページ カードに HTML として手動で追加する必要がありますか? また、Glass ブラウザでどのように行うのですか? テンプレートに例がありません。どんな助けでも大歓迎です!
python - Google Glass が App Engine にない
Tomcat など、App Engine 以外のサーバーで Glassware を実行しようとした人はいますか?
Glassware アプリを動かそうとしていますが、Google App Engine 自体の使用は避けたいと考えています。私はこれにアプローチするのに苦労しており、Tomcat をサーバーとして使用します。
どんな助けでも大歓迎です。ありがとう。