3

Google 認証を使用していますが、オリジンの不一致が発生し続けます。私が取り組んでいるプロジェクトには、ユーザーによって生成されたサブドメインがあります。たとえば、次のようなものがあります。

john.example.com
henry.example.com
larry.example.com

私のアプリ設定では、オリジンの 1 つが http://*.example.com になっていますが、オリジンが一致しません。これを解決する方法はありますか?ところで、私のコードは次のようになります。

 gapi.auth.authorize({
                        client_id : 'xxxxx.apps.googleusercontent.com',
                        scope : ['https://www.googleapis.com/auth/plus.me',
state: 'http://henry.example.com', 
'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile'],
                        immediate : false
                    }, function(result) {

                        if (result != null) {
                            gapi.client.load('oath2', 'v2', function() {
                                console.log(gapi.client);
                                gapi.client.oauth2.userinfo.get().execute(function(resp) {
                                    console.log(resp);
                                });
                            });




}
                });
4

2 に答える 2

4

有用だが不必要な回避策を万歳 (Google の隅にまで入り込んでくれてありがとう)...

JavaScript APIを使用してGoogleドライブを使用してファイルピッカーを開き、ファイル情報/ URLを取得してから、curlを使用してサーバーにダウンロードしていました。すべてのワイルドカード ドメインを登録する必要があることにようやく気付いたとき、脳卒中が起きそうになりました。

私が今していることは次のとおりです(これは私のユースケースです。必要に応じてあなたのものに合わせてください)

  1. 表示中のページで、特定のドメインで新しいウィンドウを開く onclick イベントを作成します ( https://googledrive.example.com/oauth/index.php?unique_token={some unique token})。

  2. 新しいポップアップで、すべての Google ドライブ認証を行い、ファイル ピッカーを開くボタンをクリックして、ファイルから少なくとも必要なメタデータを取得しました。次に、トークン (主キー)、access_token、downloadurl、およびファイル名をデータベース (MySQL) に保存しました。

  3. ステップ 1 のページに戻って、同じ unique_token を使用して毎秒 ajax 呼び出しを実行し、データベースにいつ入力されたかを確認する setTimeout() ループを作成しました。見つかったら、ループを強制終了してコンテンツを取得し、必要に応じて処理します (この場合は、curl を使用してファイルをフェッチする別のアップロード スクリプトを使用してコンテンツをアップロードしました)。

これは明らかにこれを処理する最良の方法ではありませんが、すべてのサブドメインを Google クラウド コンソールに入力するよりはましです。Google が使用するサーバー側の oauth ライブラリでおそらくこれを行うことができると思いますが、私の使用例は少し複雑で、Google とのばかげた小さな統合に費やした過去 4 日間にイライラしたため、不機嫌でした。

于 2013-10-04T22:12:34.000 に答える