6

node-webkit で Google Drive API を動作させようとしています。

認証メッセージが送信されると、拒否される File:// のオリジンで送信されます。

https://accounts.google.com/o/oauth2/auth
?client_id=<some value>
&scope=https://www.googleapis.com/auth/drive.appdata
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/drive
&immediate=true
&proxy=oauth2relay1232990068
&redirect_uri=postmessage
&origin=file://
&response_type=token
&state=1938150804|0.1319366391
&authuser=0

なぜgapiからそのように送信されるのかわかりません-node-webkitからGoogleドライブを認証する方法を知っている人はいますか?

4

1 に答える 1

4

私は oAuth の API をバイパスし、自分で行うことにしました。

ユーザーは認証コードをコピーしてアプリに貼り付ける必要があります-最初の選択肢ではありませんが、一度だけ実行する必要があり、(ない) 代替手段よりも望ましい方法です。

興味のある人のためにコードを共有してください:

ユーザーが Google ドライブを選択した場合:

            window.open('https://accounts.google.com/o/oauth2/auth?'
                    + 'client_id=<some value>'
                    + '&scope=<space delimited list of permissions>'
                    + '&redirect_uri=urn:ietf:wg:oauth:2.0:oob'
                    + '&response_type=code');

これにより、許可するポップアップが生成され、認証コードが表示されます。

アプリに認証コードを貼り付けたら、それを DB に保存し、アクセス コードの取得に進みます。これを DB に保存します。

            $.ajax({
                url: "https://accounts.google.com/o/oauth2/token",
                type: 'post',
                data: {
                    code: <authCode>,
                    client_id: CLIENT_ID,
                    client_secret: CLIENT_SECRET,
                    redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
                    grant_type: 'authorization_code'
                }
            }).error(function(data) {
                myObj.isAuth = false;
                if (cbFail) {
                    cbFail(data);
                }
            }).success(function(data) {
                myObj.isAuth = true;
                <persist entire response>
                if (cbSuccess) {
                    cbSuccess();
                }
            });
于 2013-11-26T16:19:38.063 に答える