2012-04-11 6 views
21

私のnode.jsサーバーでGoogle認証APIにアクセスしようとしていますが、方法がわかりません。基本的には、ユーザーがログインページにアクセスし、認証ボタンをクリックしてサーバーをGoogle APIにリダイレクトし、ユーザーが自分のアプリケーションに自分のデータにアクセスできるようにしてから、Google APIを使用してユーザーを自分のサイトにリダイレクトします権限トークンnodejsとのGoogle認証

oauth2に必要なURLを設定していますが、動作するようです(ウェブブラウザに貼り付けるとGoogle認可ページにリダイレクトされます)。私はthis postが私の質問に答えるように見えましたが、私はエクスプレスコード部分をどのように扱うのか分かりません。ここで

は、私が使用しているコードです:

https.get(options, function(res) { 
    var retrieved_data = ''; 
    res.on('data', function(data) { retrieved_data += data; }); 
    res.on('end', function() { 
     // FIXME 
     client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location}); 
     client_response.end(retrieved_data);  
    }); 
}); 

しかし、この方法は、(私のAJAXリクエストのエラーフィールドが提起した)私のクライアントのページにエラーを返します。 「場所」情報なしでHTTPコードを200に変更すると、クライアントに「一時的に移動」ページが表示され、Google API認証ページにリダイレクトされます。

提案がありますか?

+3

https://github.com/google/google-api-nodejs-clientを使用してください。 –

答えて

9

私はそのタスクに既存のモジュールを使用することをお勧めします。 everyauthは、Googleへのoauth2アクセスだけでなく、それを提供するほとんどの他のプラットフォームにもアクセスできるモジュールです。私は私のプロジェクトでTwitterアクセス​​にこれを使用しています。それはexpressの統合も持っています。

The Node Toolboxで代替候補を探すことができます。パスポートが気になります。

3
あなたがここに私のNode.js + Googleカレンダープロジェクトをチェックアウトすることもできます

https://github.com/berryboy/google-calendar

私はまた、GoogleのOAuthの使用例をいくつか持っています。

+1

リンク先の記事からさらに多くの内容で回答を拡大してください。 – bytebuster

8

私はPassport(MS認証スキームには関係ありません)との良好な結果を得ました。私は最初にすべての認証を試みましたが、IMOのパスポートはExpressJの慣習に適しています。 、Googleの認証プロバイダーを使用する準備があります

http://passportjs.org/guide/google/

+0

'passport-google'モジュールはOpenIDを使用していることに注意してください。これはもはやGoogleがサポートしていません。代わりにhttps://www.npmjs.com/package/passport-google-oauth2を使用してください – Luc