{"_id":"everyauth","_rev":"190-f6103311de8867ef96bf0e0b92c76835","name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","dist-tags":{"latest":"0.4.9"},"versions":{"0.0.1":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.1","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0"},"scripts":{},"engines":{"node":">=0.4.0"},"_id":"everyauth@0.0.1","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0d2d93cb900fc599a43cff5ea08bcb9bd5ba4c93","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.1.tgz","integrity":"sha512-LleNZ6Trv65frqjGofS7HBKuNL91Z1AMbEEZO50bSfBGXGXp2BEB6vgLrsSXXaAr5kKRxKh4DhDXETCfpaV4Qg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDayE/i650Gru4iCG7u+TryR4di2WiU3ZOX33BdNAwF6AIgaDkODBNVGS/9pDveX0eKqDYDInrKZU5B3KDkobUUS8Q="}]}},"0.0.3":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.3","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0"},"scripts":{},"engines":{"node":">=0.4.0"},"_id":"everyauth@0.0.3","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"a17a7316907e273e608781aa9c73093aadf13909","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.3.tgz","integrity":"sha512-ed7geg8NdMxXwS94Z67o6OcxfunQUfmuCnjQbfrsWnZI4wKhRsq5PB24oefdHOZAgfekl5MOKH+0xocvn/CkLw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMlFPBYPlfXrzt/O9qaPv6Ncvm/PGzVmnlGhLbur8kvAiAm70m2CJ4n59Hp7iQv77xqRViIaqW1Y5m/63cClvDbOA=="}]}},"0.0.4":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.4","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0"},"scripts":{},"engines":{"node":">=0.4.0"},"_id":"everyauth@0.0.4","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5dc4b3c7532bc8c71ba0563ba00d44b5572bc07b","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.4.tgz","integrity":"sha512-l/a4gFV0RsNFxRFzxwlH8YRAdP7SbCDZbbRsrj1nOS6Sq2INIqR2mVP1doigzx01TbnKH/4HTtJ6kifqgdhHNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0qgLukKKJDOFN7Ek9tf/nymQeX22Rv7GTPgSgeFWqjAIgAwKCNMGXxC4xHRaAKGDkH+XUYzESzrdeZ0GmVG1ufio="}]}},"0.0.5":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.5","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0"},"scripts":{},"engines":{"node":">=0.4.0"},"_id":"everyauth@0.0.5","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5f2b108921fb517f7a7a3e074867da5b5c7956a0","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.5.tgz","integrity":"sha512-VpIZChxWs52pFNCzIMj1eXouFEIc+A4nMpzLagTisdIPuafJHoQVZf/G5qdKQOrarqWWxocewSPeS5LhRJBDyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDp9XHuBV9DjjZR0fm2nYZ7GosG8Dp08AWWrxkJQaomlAiEA55noG/swFKuVHqXklBxV115A/Zy4785lkKkfbWEdrfs="}]}},"0.0.6":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.6","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0"},"scripts":{},"engines":{"node":">=0.4.0"},"_id":"everyauth@0.0.6","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"27009c35badb7b50856b7f8a25d73e72cb2d8bc3","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.6.tgz","integrity":"sha512-uvXopdASJnsxk/k+ecQQuoY5yuYJ1VUqOZVCkRgh2sT5Ack7ysfLszxoZ/TVqL8bCOYvFqGY/9tdOG1q31C2mQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDi3JQADgV5Y/iaDrMagbofdGigTevLR8XyamtIX1DJEQIhAPkn+HPTID5hVg7OOT1ezunf5yecyVApt/JTciAQkEQe"}]}},"0.0.8":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.8","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.0.8","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"c8776a8b87daeebf4a04f787406b447b6b80e8c7","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.8.tgz","integrity":"sha512-4l1Z/cTdCCaVT/r3vz5v0wRY4+T+YyK0Kp9Ixi8p0HlUE0bhMffrl3wHtYoXkdw1HG9PdgsqCRUbvaga1BoFAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9Ub+vg+gOdR3K0MGrZGOPibC51CXGqnwXKOnttOJwPAIhAMm6s9q4fyMXVnRyGna5rSCfX4/37ucXA8OQZOZH8Ap1"}]}},"0.0.9":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.9","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.0.9","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"8e68c7c74fd364d28ea90de01b118e1f7bba8913","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.9.tgz","integrity":"sha512-lR9S4r+dAHQQqQvGVtZH6NbORwqvUXLt5Wli5ueLoI+G6Dvzex/nYPxYnl0jyu+6L9bCiO4hpgNKgaBhZvUv2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICd+Sa+y8+8xkkj+7tnmUWIKNpYB/riwYI8pyjbG81NRAiASWkgreYL3X48WZGU6m8OrK832R9hdkSqTriJqQLLpRg=="}]}},"0.0.10":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.0.10","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.0.10","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"5e3d5235fca5c589a399d87f5ebbdd0a02fd5656","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.0.10.tgz","integrity":"sha512-xKgfWfwS6Pencra8wC90yFgXVfx+Lc1g1n15o4WxXnU2XE0UozS7tpzDOBPvdPSpD05Vl4MxPT3YIAuckhQERQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICwVBRX1qxfQEGlIg5/2HBigKkGMUG1U1cBQtQf3gp7/AiAvKHYNQgSO4R+NCBZG0Zwm5d6KnDWM/Lq+y3W4hBNNUA=="}]}},"0.1.0":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.0","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.1.0","_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.5","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"50d05aaa245ae70556263407bd74463a7608a822","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.0.tgz","integrity":"sha512-QQCWQOZY4cH0Iek+sEU1LLXh/tXobSEVI+MfLq99vj5ZvxRc4+V3OwN9/Xj7dyQnjLw8JeKElXe3nzv7tWYPyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEf2tV2+eXOJL26/9BWqZlpMcniVAXcGSrvb4XlM9oLWAiEA+1GMP/0TwOEKuFhqbErZa9dvZaUQKTEdtgl5JSxZe6U="}]}},"0.1.3":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.3","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.1.3","_engineSupported":true,"_npmVersion":"1.0.1rc9","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"0439cfec4b413e96c0a9c0f3c749c0ab91168006","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.3.tgz","integrity":"sha512-6Ol/d325Vo7jj8orQ1rtI9kafZqa4nltEu9TSYn3lirzSk7EwGW7Rvwgah7Pkwx3vrk35/XccveCHtxcbSUzSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6RH7g4NWyFV3UBtyPD7wIyRbP2rd58Ox3tplX8gvJmAiBy2ILlDN+D5OPiV7XbRkwA8I4iIvTNtHlW2uzrUS0LMA=="}]}},"0.1.4":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.4","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.1.4","_engineSupported":true,"_npmVersion":"1.0.1rc9","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"d2fecaf33c2ad74ed308967c6e3d53145f01e7ce","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.4.tgz","integrity":"sha512-Z47OPZEQCzOgjlHaghsuKkF6OO1O58+cecDhTU+3k9pdkIwd0RX/jFnS/GFyrcncUFQvWiKwx4jo7PPuNUWoqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv138e8w+mGOcRevJQ07T1h7PkX56+bdu6D+DORb4oSgIgDExJeShCOCiSFaZMDSDK0RWUELUq+Bjf3IUwb/eXb2I="}]}},"0.1.5":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.5","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.1.5","_engineSupported":true,"_npmVersion":"1.0.1rc9","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"35daa99e0ac305946e92410cd45323f7be94499d","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.5.tgz","integrity":"sha512-ASlSW0RrxCQ0goZbh9FuovU2nViL9C2cFRySaq1hCo76PJe1KQEQ1QNIfFMfcjIrpQGW6XzHnGV+zx020drzpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxxcv0JrI3C9BgUcNlPwsNBYAyF3O92ESBlyREPHQ6XAIhAMrc3u1xGScv/OAAAY2Q3YOq0Yj4hSFlLZv1+FnItX0O"}]}},"0.1.6":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.6","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.1.6","_engineSupported":true,"_npmVersion":"1.0.1rc9","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"bd45e100a80b989b9fccd5940675335e994f882b","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.6.tgz","integrity":"sha512-8cbZAe4lTBaqp1SdcAJTUPn3WUqCvMxef5bw+nvsS3LIMioQA288WG5EtYWHCf5ajyhpM5YA8sML7Pg7UUPcmA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBERI65G2mLD7vajZPtHLN2ngS1exLYt/NTCFjwdrhANAiEAsMbqDGLuTcfGBhiixlpxtWtF1iR1410U4HcAPkRoXUo="}]}},"0.1.7":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.1.7","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.1.7","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"0baa82efed5656fa6904dad522dd7fbae45e038e","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.1.7.tgz"},"scripts":{}},"0.2.0":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.0","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.2.0","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"865935b35c6c2c51398caf10dba1960e92579f80","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.0.tgz","integrity":"sha512-jEBiXzYKmeiK9p+Og8OOevlzWzD4xt57yTK7GLIiFKjUNZxw55uphyrtRcmkjlzBNrd0gLtnuIWKrVBx4AwDig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD67/bcDWmU3UUcm/qjDur2ZRQoS8Gi55Q2HxODmP8SWgIhAOagSwz+pbQLj9sKRpLFgCyElWmIzT1DwXN/t5tBIWLc"}]},"scripts":{}},"0.2.1":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.1","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.2.1","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"0b3241a108d8641a8c4ab711037ae4949b82c156","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.1.tgz","integrity":"sha512-u09ljx7hhgc0rsZ443cFpEgIzgNt5SqJnZV6c2oWBb+bUuaIJtSGa0BEq7H9vO++z3zjMn+F8VPdk+K1gIX30g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA088dXOQjzZFQfFGVDe5+exmJ5yiebVWUuA23dxOQR6AiEAsp/+QU6yTadQuVZ43nLRpMewnubagud6aB2i1Ex6XF0="}]},"scripts":{}},"0.2.2":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.2","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.2.2","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"fd59929f250df52697ce9c0ace2109ebcb8904fa","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.2.tgz","integrity":"sha512-9RPwHnU/wMG3qvkbSA4uDMjgKnii3aUn6hgVdwrvEVbJbhNyiIMvDJhv8P0r8He3RZv1SLhL2MRgYK+Dj7mh/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAX2IQwA7yZ/TPeGH9KB94/Us5P4OL5/Gmjf3XkBPiNoAiEA6FS4DxhSCpeI65XmU8RL7KwAY+zW3xZKVdB12XHgqZI="}]},"scripts":{}},"0.2.3":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.3","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0"},"engines":{"node":"0.4.x"},"devDependencies":{},"_id":"everyauth@0.2.3","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"caefb90551f8f2ca02f2238663389594c5c044a1","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.3.tgz","integrity":"sha512-JpkxPVpdQEO4WORGEkRUt0A/XN8RRvd09Xjkq/Mm4YJh5x6dgbXCuhXTBDTMGFDdoKucOexvpoX9Ao7nuKK1fQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtqc20elkYzOcD08zqVMnj+rKK2ynt2V9o39y5GyphEwIhAP+iKd7UBP1i780XGZ3i02dO0k2xPBnPcHgDLsIQdYRL"}]},"scripts":{}},"0.2.4":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.4","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6"},"devDependencies":{"express":">=2.3.10","jade":">=0.11.0"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.2.4","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"19596a04d93d33cdc17769c6646d717235c454d5","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.4.tgz","integrity":"sha512-rAhCwtiToaEQSituCb49DuG78owrkJjVHNE9+nW39jidXctKyjlmCCy8XjHyFt+BmcixQVIV7blOjzFO6YVnVA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJfSr8U+SxjRwgCIHGEjbgIe3+prNiPrjAHctV26m1dQIgF2Pq7+M9iV4hSdnwUVn1AhWBvqxdX28fpqtgPnnDLYw="}]},"scripts":{}},"0.2.5":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.5","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6"},"devDependencies":{"express":">=2.3.10","jade":">=0.11.0"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.2.5","_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"5465dc8e7c307d66665605df2dbb11c8c5c46ec0","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.5.tgz","integrity":"sha512-Wl/fC1CwfGvH0U3O2q3OpitdHHzU2+wiFCYQG7eGYLO4Zbl9r66yyKc8JhMDevqnFClnR5GTxAWXNE6a6WbyxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1I09KWsp12YgkXcAry38UCHkUa7P91hJ/QGq9P+dmwAIhAOrhFL2aTWFcZIa/4VWTKlrvXEYRijbptQD6K+5KL0jZ"}]},"scripts":{}},"0.2.6":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.6","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6"},"devDependencies":{"express":">=2.3.10","jade":">=0.11.0"},"engines":{"node":"0.4.x"},"_id":"everyauth@0.2.6","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"c87bce69515dc5e6434441f24d160212b9af9bd7","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.6.tgz","integrity":"sha512-6IFZUbf9H/i4c3y0rbgcCG7OaTNASvUTIEs/0dr7y+gATqF0yDC/Yx4vi4lnbkm0Icf4rhrmecX/foefcwtVBA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFk9lvKUNM68z/wUHJA9UTuLR/JYeSFAV4DoF+llLmZxAiEA8+llOKY3KSpF4m50nx+2VjF5A/irqgBB5PzaFnFkhLs="}]},"scripts":{}},"0.2.7":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.7","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.7","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"2384fffacd734184b3caa73ca4d7f7b632ec8971","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.7.tgz","integrity":"sha512-0FBh55g4Ax550swQRYQ6I/cRbx8gGjlxVqKk89LLwL7On2Ib88HgYcC+VXMVl2M7oKmhCZGc2tc50YnXlhV0+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5idOe5uiAN36rjv9rzgCisppLqfu/WjtPjl9keaRrEAiB2ghlGzPh6rB9/L4CFH7cewFSXBdOyWIUnUcQG5X2aKQ=="}]},"scripts":{}},"0.2.8":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.8","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.8","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"5ba900de04a06e4cf0c30b9c5775c62ba24433de","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.8.tgz","integrity":"sha512-sfLLWEN6Kz+3UUi1l36C9ZCiZU6HF8+wPmy32kFfGdnHJiyjcwco+vMgH0XEignQF8KoQX5fJ7sMqXrm28XOSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyUsEqCWWFNn9GTl7Rc+b/q3TLkcJ79ENt3e874OUyOAIhAII0pvAnmTxJ4N+LTxH80OlyGXJHiCChlduo90mUtyjI"}]},"scripts":{}},"0.2.9":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.9","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.9","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"ff4a2da6b0a5337805ccc981f203ec5a6b01e142","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.9.tgz","integrity":"sha512-j1Abl7mRiEYEWkxIHllm9r8PBvgcpBvnN9ZWijOHmHVHjigATi/LS3uZyV/s2TPzbeKfPFGUG9bBWEaTEggwfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHkInp0UF+FOwKjz29hdV5skgrG133YfN/es+s16u3ZwIgd0496rtTmRlQpb3+CKVGw54+7hFRj4N6tl1152B9Mq0="}]},"scripts":{}},"0.2.10":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.10","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.10","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"91ffd20d4ebbb04e7c48bf0119aa15c60f4e378f","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.10.tgz","integrity":"sha512-hBQjgrbTL/fqfzDvJTmUeXnWGdijFyPf4zAHv/CjD3LRdN4FSsAlLpxLkmw+99Z6cIgycitAyVuyIyubaEHTUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvSJG6g5d7tQ2tA1yRzNeuOSr/vg/WRHC+cG8N50ljRAiA29r5F63kdaoyc4yYFRizsJFt3L0SqVqLeB5QyDPwQ3g=="}]},"scripts":{}},"0.2.11":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.11","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.11","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"07e4ea1aaa8d2741908127c26e8c58d0571785db","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.11.tgz","integrity":"sha512-clBhQA7aGvUWlOT+PT+BGuU6fXAwXJoU3h9SRhy/rH2jluxYG0Fb1vdRuRJv8mawyV0rqcAbfIsGgSwdz1t8kw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjKPLczd6ChZXR6Jc7Ge/ZPkZd20CRQDDlXG72b2h6DAiEAtKLogh8UIWC2Vw4gR8njfmzoQoRR0WkRcgalRqHs9xY="}]},"scripts":{}},"0.2.12":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.12","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.12","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"5590a7b32496a4017804d45388a70244d905d116","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.12.tgz","integrity":"sha512-qJcZ4rcqLF6s5162GGla8hH6mQTKWkh9UQ3NEfgSSliq3YavxvgOrKc8talYfUMtukT8jzqnlYaidk8sRe9i9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATgt24ThapVMsdjGb17D73eQlF9LsZ8OcXuWTPaeuTjAiAtrVsLpKV4UGKpiGio73nutKhML1E6pzkr1TFJd7qJMQ=="}]},"scripts":{}},"0.2.13":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.13","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.13","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"cea37f818801ec25ddc6613386b6c21c3e752c0c","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.13.tgz","integrity":"sha512-XIiHcgZfrTmVDsQBBZNB4YSgyyVfehhAGoLpB90hsbKeIEDXqYLWWI2I8c4262TDcdI+9yOhmEURosuRZimj/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0B3XD/vBggQBET48gcVEn/qEuD7hEjkiQihM9/F/ucQIhAO6IFn/AsdQJurZxuEUY/KhUEwi01rMVGPMP3XQ+VYIf"}]},"scripts":{}},"0.2.14":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.14","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":">=0.1.6","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.14","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f7c9f7468c87955f9bb967b1a85e623cfaf8e272","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.14.tgz","integrity":"sha512-5TH6JXeK42ClliQLI2tqQn8qxDYf2hSerRvoCQJIEQqRhWCWvAsSp3dHEwj9Qs3dqAf1W3nedDfqb+/0hzBs5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCN6xY4sUzAVZZCmGR9/F7EqOdceng5RcObgimNtlbtRwIgHZM3lr3SfLyxAHnWcCoRqkB6BD/XOeQPmPqnkEtMoko="}]},"scripts":{}},"0.2.15":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.15","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2"},"engines":{"node":">=0.4.x"},"_id":"everyauth@0.2.15","_engineSupported":true,"_npmVersion":"1.0.9-1","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"70522ba7c035f1c62ff1892f713a4abf0787a6e3","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.15.tgz","integrity":"sha512-XzGEUwvtxAZuBqhRjmPtpYEEv+xlg9WcPwdcuLLo36Pav/ApspsCvBtiGIXc09SngzU/36UFbhHKtBWaAEFQiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1yhAaIjOIb1Nr5MIlRFe6dpMOdi1uKn9bBog3Ws+ENAIhALvPgTiyzVt4db3N0KAUsgc0ifBXX/zWddIyEJFh8QNx"}]},"scripts":{}},"0.2.16":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.16","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":"=0.4.x"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.16/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.16","_engineSupported":false,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"6304db053de335904003efbe39ad99d9f30db8d6","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.16.tgz"},"scripts":{}},"0.2.17":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.17","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.17/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.17","_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"19e9db6af6cacdc1470980bbfc8db1b4d5b6c5a5","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.17.tgz","integrity":"sha512-98TbCVmvz7BMpflQKz4zzpQGfeQT8VxwfamUBRSJKTC6mfaii+DI78y56LrtgE1CAnnd2bmiPtwtzA12dlBWsg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6grJfqxbp4VqraNKmId008e5b3PZKkqsu2SZ5ViHgGwIhAOFoBOqiAbVS2Pt3PMZdGvG/xc+OWXQKkDB8v9yxMuv1"}]},"scripts":{}},"0.2.18":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.18","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.18/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.18","_engineSupported":true,"_npmVersion":"1.0.18","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"de681299c4230e42ca01ffc084262f8c6c8f1ca2","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.18.tgz","integrity":"sha512-lQ4ntXIxf4Y46XrnohDpMHMnT/2/0PBwHrotTPI3B2aaAAHDoT2uI2ioo9UHmwJDavJftyHMQnyxpcDZAKvBAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7oRZdnDdLaCOcu0DfM2GoPKRQ56hrjy8/I9AcBbFNJwIgZ6ZO6FoLMSgZhfQ4y0eG/s4SNVol2K5SyGMA1Ndl1yg="}]},"scripts":{},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.19":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.19","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.19/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.19","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"af2a543f2e3025bd7e3e609400724804c57b1ac6","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.19.tgz","integrity":"sha512-App1J9bl/KGPMWSgrCyWOili1rAoxvzxgqxirxS4wh5lpVaZa6r/rRuAAU7Pb6RxJfiZIvi/GmmHKEomM1J5fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBBzXjWxnxAKExsLk5XXZYW8g1zpsJE5I4WspL8xJE3RAiBHRdAAc+SKkksi+v8LECuOJFUtGWSWVvUQxTbXAL/flg=="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.20":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.20","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1.4.0","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.20/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.20","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"6bbb4297c2b7fc004d7188e9b4c16d2f40230e40","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.20.tgz","integrity":"sha512-122gtIx9XhU0/Lyvn30rthLq/6cjTL3ISoAu6XbyIpvGVMYQtUk/321Bm5B1r4Gqne0Tv5zA0ZDa1SCDlnreOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+2F5eJxrTYKRYGGHGhVq31pm9LzpQsMFoN+hztCBwVgIhAJ0dzD1wUf6qQp7jBP8x9k205NIFCUgF8mRnPjifvn7Y"}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.21":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.21","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":"=1.x","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.21/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.21","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"dd76116fd4b651cbfeb061a476e2f22270716224","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.21.tgz","integrity":"sha512-uuJ2Yemg6vC2cABsJydIBC6lD5wUmpsclAoHhfRkzN+G20PJhwkHWzP9zZFcA1NIhwoJLjz6WqV/MzpqZ39i9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFpIBHTkydSvsdSVufjuRZNRfTBBPiD3u4dB3zu7VObAiEAnq312LHvaXKPx9mg7KigZQuEybFVbNut4IEsMnOYEzQ="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.22":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.22","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":"=1.7.x","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.22/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.22","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"1a98c494066c2e23089d990d845e60afd7f5ae8b","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.22.tgz","integrity":"sha512-STKBueGh5bzrFDiT9SXzAAH/Spl8Ko/lkKgfLxfhd0Upcjp8x4s0HwmigfOW3PXMunwMhJtF1UNv+MaJaY4+Cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCv+Vfxp0yEmNpETwobvRascMn/JJGKT63ToAZMqoMOLwIhAJPfb3b36QFqhTxn/VNHrVHxrqp29ILTdrwt0tR8UWn9"}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.23":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.23","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1 <2","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4.0"},"_npmJsonOpts":{"file":"/home/briannoguchi/.npm/everyauth/0.2.23/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"everyauth@0.2.23","_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"ff2692bc316f28ce03b7a3413ef05380403bceea","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.23.tgz","integrity":"sha512-9Mt+dCs68Up0kFov2nVUZqQ6Ti3EFS92jhPREgFG2hf1tNB6mBF/eF0y7OL4bWuH4HuTmSjk+gdrle01XAVNfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICsPAoKjjrxdOI/sHMYOPwBMkmHCpe2zCC/WgwRlvyIrAiAGSCgFQy/CLe9kKoQH6MT5r2mzf7Gm/wfFJJ4VgsyJvA=="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.24":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.24","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1 <2","openid":"=0.1.8","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":"=0.4.x"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.24","_engineSupported":false,"_npmVersion":"1.0.100","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"a88f20f96f7e698eb45f8279f064046e68d59060","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.24.tgz","integrity":"sha512-MtqII8KwdTdrMKfutYVtYrBshJpECnVqpeXNZiMC9SEwz4Z3NKUidd39DKML7BmICEBE5hieNiFB9cYSyOVBdw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCyiTWvAP21GfFpOzhTAIcfczoITV/fnnza7UT7bUwxAIgHJrEsx4/h5LBOZ3IkdvMvvswdTT0COPTlRpRBhM37qM="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.25":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.25","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":"=0.4.x"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.25","_engineSupported":false,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"57ba78d18f1b05fdac1cd6f1e8a0370728168ca6","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.25.tgz","integrity":"sha512-TxqLcBcaSs+ErcR191YmI7YpIzieUlvs01paF6APgPVoIE2/+8wyJYtTNAeWUHJRIwJSIIi999H3qeivE9c/kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPHaiKfdZfc0KGRykHMktRzT4qFHJoeZ9wdSCoY2SwDAiBvMS4Mx+BLafSM2l+OG7KMYEhMOcO0HhZFiQyt3P1AFQ=="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.26":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.26","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.26","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"1f67949ecafbb966c989b85494f3834a5394c3ec","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.26.tgz","integrity":"sha512-QsbWKw3Y46PS2Nsv/sH4H680LJMeYYMJTsI4xdfOayREwbD75vrUhdHt6jEmuVA00mG+XfLerRzvhTGjOgzoxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRdR3fBglWmyuvRnOVzL+rDKDIXCLLhHdAXboaR0bUJAiA8LnVZFZaj3yXAqNkmTsNbLQTEswC5WhYkqztZ9Pludg=="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.27":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.27","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.27","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"ca89227eef61538f27908cdf598f636e2aab78ec","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.27.tgz","integrity":"sha512-FY4X7evtF1rVVXtr5OjJwNB4Aoi9o2lC16z088uYFbFolHmyV8Ba4q8Jl5fyyMpTsrvRvE0n/5byJbDnubnCHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEliqQbGhskT6xczmsnVw2w7odRCMa3f4IZidPUggZGFAiEAn53YPrayCAmbSQLrrEFoaxyHx8CtCY6nkiEyeSz9g0A="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.28":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.28","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.28","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"84a4744a9da2cd57d2617e6f9a58b0bdf844bc62","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.28.tgz","integrity":"sha512-m6oJP3dft6jcoSzD2ZunTok+KeD4RRGYLhkCxOR6jfydRVkUE/X7NvDhB/AqMB3+COU6Yx0KZfZ6Lw/QqKZDcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGndj0+yqQ2/USkwRGEgFyE0K1DEvq2gKYa6FCJ66pYGAiBXSlukyMl7412U2xZoV6td2WKe3qbo02lQ7/7l6jvvlg=="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.29":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.29","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.29","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"abf191499a12aad9ce3ad9b617379f54a05dd150","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.29.tgz","integrity":"sha512-mg8rHkyVaM3dZpoXfb3Hm5y/TR42sbAvV5HI6XoR9vY0pCHLP4TfZQnRIenJGg2WfaccmvyT1NXc+ku4fx9thg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMKTzgysqSDstkR3HxyCJ6uW655dkTUzo/zO3olJ9SlAiEAglkOPma5c9vHTnOzNIDvtCMmRHmOnHY7uAstbsLO3io="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.30":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.30","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":">=0.9.0","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expresso":">=0.8.1","should":">=0.2.1"},"engines":{"node":">=0.4"},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.30","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"8f192c066d24dd5c05d1d6ff98e24e47a156de10","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.30.tgz","integrity":"sha512-ecAbxlQUG3j3GXHMZaTlXTXzM1ploBBtLk/6SA2YfyqKgegs3j12G3hm0NIlisju3rS9TVRtUyoeYDc5t0b3qA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICa6g11JPpz1ztvO7HAhsbQDb963x1MAu/0Jggk84Cn2AiEAm0+NPZCfhTqErZHJ/ovIYUXfA6OFr7NgVZdpGgRrYkQ="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.31":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.31","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"git+ssh://git@github.com:ciaranj/node-oauth.git","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.31","_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"222e07be1c2bff1f21000a2748713b7a8dee9db4","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.31.tgz","integrity":"sha512-7zlaUF5HtfF8VR12EftbMWdzz9LAaZhGAizmL2eZO0EbdFCAkAKg+kmxE9DDMrob/2TuiXsg3HT6VBJqpxr9Nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEL0W7+KpSEs9sXkyTQYLcAcL6kB8J88zoBNZz2Vtx9gIgc+VKB5yxRNq/mHRr9MfEnGll0gXO6tjT0yNMedCdfjY="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.2.32":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.2.32","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","restler":">=0.2.1","request":">=2.2.0","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"_id":"everyauth@0.2.32","_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"827832d8129ef462bbe7e9a3729c541bf1316cb8","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.2.32.tgz","integrity":"sha512-Y0oR7/qx2OvykASAKN5BgNGqqE0ic5GFX1dZz5zYZ9cKfgMLpcxE6lwiUJXIlCa2a1L/ICREReZyjeH1YjOkWA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZVOZV0S28JZkx3dzNTIVfpocM0fnxcOKYnFX7NJ0WYAiEAvNuFyfoApDVl1SpBZj2cArH9nrNzFv1cXlupGYTj78c="}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.3.0":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.3.0","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"_id":"everyauth@0.3.0","dist":{"shasum":"c969e57ffe917428bed748165f6b249cf40d31f7","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.3.0.tgz","integrity":"sha512-M2zmgPJLlHgqhOo43sT49konebMC1ixhsfljSJH16jvslwBoaKkd+3bWzhSq9L+lSj1tSlJtbCQZDoczpeYrTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqdkjJNxLR+557Q0lMOGVKB+CAhIS4pWfWB+SCI05KEgIhAILRP4NH//cSvkLxwtU47HivO+04eIBEfoGdQJ2BnzgJ"}]},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.3.1":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.3.1","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"_id":"everyauth@0.3.1","dist":{"shasum":"fb9a3d8cc9f379867211bc55d6432da0c52e4cf0","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.3.1.tgz","integrity":"sha512-wbRrlDQs32IUcvhxJTTqru60s2RL4Hvy+KGVblpjbUwdebQ2Ne+5pleUIZXAL0zdi82fRtBllsigps32P+xC7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgB0r7/WcpwhZPGp93uu0sRmAXRKpepmSTAvkwSI1n1AiEAkkhtHetWrMKrI+elBn2F81bZr+Vk66eRoA3a2t4TokU="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.3.2":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.3.2","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":">=1 <2","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0"},"devDependencies":{"express":">=2.3.10","jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.3.2","dist":{"shasum":"c2c2c5c5d4aeedb34f74c7fa4208d7ecc91dcf69","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.3.2.tgz","integrity":"sha512-pws1yl4sUmFZ3bW89WiF5hXjtP7VBKk5YglDQpy9HrWTj/AL5JM/Wsx+G+n8JdZpkX1JQoasGqQKo2YIaw1opw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClcncYeD7lQzWDaxo0tFrDGvWLYGp4hEcLZNPf/VAPPwIhANscpj38OiHGMd0raRkBDQPmQw2ntU4wskxsRurM5q3c"}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.0":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.0","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.0","dist":{"shasum":"63f843bf02d8b0d03312ea3587f3b343c76607a0","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.0.tgz","integrity":"sha512-mRZFlddzlllGLCveXK/iHCz7/xakm8Tt+oqP2YYVNmdV/AKAgLy1lHDxvq13hIHw0hS4yt+hcU1GfahbOqimFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzaAZMJmFryjmvcx5uHyxqbGcP2WNLtlmP8oMKEnB0nQIhAPaBBmj92bOSy5wKligH/HzcvYXqQqR6BTNyYDzVDEz3"}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.2":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.2","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.2","dist":{"shasum":"f923899bc75117f76d5a02ae9a29f69d211c6ea5","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.2.tgz","integrity":"sha512-XGnaC/bBPFJPNqHpgIJZmeVRvRjA21V1WC6VDF8mhsZDyBu7Oa/ulbN3I25hnh/D0y2e1GCNbTzPAuQndSPn1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJQtRdKZCF5tB0nVTNo+S9l2pIKo+UV32+OV+kv3b3RAiB7ovihwazWBY9zNyRC52UbycQkWq+Fpy+KH1EEXnv7ng=="}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.3":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.3","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.3","dist":{"shasum":"032ef841989b8ff9921da501545171fd596bca5a","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.3.tgz","integrity":"sha512-7eCyM6wkJ14RU70uZDFBXLIQLO7tySxH4itRptjiHvugClkqZywm1g126bfB2XaUIlYrU1+ZLyze6tjWMKz9JA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwKMkG8vP6kCt1GxVciddBVq+lwBDLhkufsGUZWx1v7QIhAOKBx82o3AqItg1gVXX0v8QVhdRj+m+8H0s1aF3pzwab"}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.4":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.4","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.4","dist":{"shasum":"310d82d59300662c562215fff424a0221bf3d326","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.4.tgz","integrity":"sha512-0gqkmZP6cEOAZEKTI0x+h/hhgH8rzl4bc3EBWHCOoCzJeP5jt6twsJhactS2jjMmJi1dknsq8tf7XpbP6gdPJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0dz9u4oF0y2F52JS6F5s3NLq6PIRYDifQMiNnf9LIDAiB41fz+PdRIbjlBfErHtVXmE5w7uN65vB7ofXwzWbT3tA=="}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.5":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.5","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.5","dist":{"shasum":"282d358439d91c30fb4aa2320dc362edac7dd189","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.5.tgz","integrity":"sha512-vSyz1DFVRxgPQsB08U9ZpNmABQ4hvXVNnWrxRdqSsDykqT6RrY7Q0Y5fFuI83cvealzlsU01AUVtoxMb7A0/3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5OaZL9vNrAQb0mKKhttf4pZh8VEpWkeXpqA0NF/SWxgIgX5Xv5b9W6OG98XajBWytdbv88RKYTfIYRVx3jIhiafU="}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.6":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.6","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.6","dist":{"shasum":"0d2f09a62d4bd18d544caa732b16a0faa3edc91a","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.6.tgz","integrity":"sha512-N3JUyM4LUN7FFrtq1af9agz1Z36u9+TK/YWGXrm/L6w9O5yufPkMfTKM46cqBqXzonAlNO9oMmTmWoja6Ai6EA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6LcUf9Lnb8EF50ad/c14n6nE+uRN1VKYgYWMUs+x5vAiEAyp2+/Gl6EZqtjBQqC3TmAEJtM1A3xDeky5/maTTBav0="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}]},"0.4.7":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.7","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"gitHead":"fefab8390787557dd018c330a9e57551f094f35f","bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.7","scripts":{},"_shasum":"1997a857765c374f1c2362c4f2b73338ff9e415a","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}],"dist":{"shasum":"1997a857765c374f1c2362c4f2b73338ff9e415a","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.7.tgz","integrity":"sha512-ExwaOuTkdKoTzIUMmako7PAdsJ+B23Bwuaq9fulMWtCqjyqqcKHqNJ7RF6R9BqAFxUbSP8DJ60OGjllKiCDP9Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEkB7O/F2v57FtnWbtmXeglM+zVEA1f2nwBGTHSKJaPAiA5HWWQMFXnwUkl23LBAeIZ8CRECGLtk1rg1hn7/ndAog=="}]}},"0.4.8":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.8","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.9.x","connect":"2.3.x","openid":">=0.2.0","xml2js":">=0.1.7","node-swt":">=0.1.1","node-wsfederation":">=0.1.1","debug":"0.5.0","express":"3.x"},"devDependencies":{"jade":">=0.12.1","tobi":">=0.2.2","expect.js":">=0.1.2","mocha":">=0.13.0","satisfy":">=0.1.0"},"engines":{"node":">=0.4"},"optionalDependencies":{},"gitHead":"4e99e67da5e91f198859b07d8d249adbf9c5daa1","bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.8","scripts":{},"_shasum":"f9051ad1e644eebec0cfa729086428d2f1934b58","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}],"dist":{"shasum":"f9051ad1e644eebec0cfa729086428d2f1934b58","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.8.tgz","integrity":"sha512-VKipdy5LjZEOVjVkNGbLw82YdkB5KkMBqTKF9+sJcxBDT5mUPErAZDlFXXrJjSS3IVKDCfvz0J0wiouM/zsm/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA4ewL9qxLJO0K4sXpWJmoNtlMLucLwsaAIanQHWPhbuAiBwKryeWIz4oTFmx9DYZS25C4YZO2gc5L7p7kDiPbQuVA=="}]}},"0.4.9":{"name":"everyauth","description":"Auth solution (password, facebook, & more) for your node.js Connect & Express apps","version":"0.4.9","homepage":"https://github.com/bnoguchi/everyauth/","repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"main":"./index.js","directories":{"lib":"lib"},"dependencies":{"oauth":"https://github.com/ciaranj/node-oauth/tarball/master","request":"2.x","connect":"2.x","openid":"0.x","xml2js":"0.x","node-swt":"0.x","node-wsfederation":"0.x","debug":"0.x","express":"3.x"},"devDependencies":{"jade":"0.x","tobi":"0.x","expect.js":"0.x","mocha":"0.x","satisfy":"0.x"},"engines":{"node":">=0.4"},"optionalDependencies":{},"gitHead":"54c8dd024f202d6c4f7199b216027d10c720f578","bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"_id":"everyauth@0.4.9","scripts":{},"_shasum":"b5914b8e540be3ce820b7f6afa41b9ffda59aacd","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"bnoguchi","email":"brian.noguchi@gmail.com"},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}],"dist":{"shasum":"b5914b8e540be3ce820b7f6afa41b9ffda59aacd","tarball":"https://registry.npmjs.org/everyauth/-/everyauth-0.4.9.tgz","integrity":"sha512-Jh6AchC0ULvvUL+aKPGEtJYbR9crfCKpn+zQ/ReSCh55C1Ye96yDUTMrcfdGlJMkLclzMuZ6577zo2hrcexSSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHTVZ8URGHPmHUFBQfdZlMVyw88qvoet6n3Hl3Lti/pYAiEA3k4x5Skb+JlK45tcPpe1AgBws2zVgVzMDf87TTYGSpQ="}]}}},"maintainers":[{"name":"bnoguchi","email":"brian.noguchi@gmail.com"}],"time":{"modified":"2022-06-30T12:07:29.371Z","created":"2011-04-05T23:28:28.310Z","0.0.1":"2011-04-05T23:28:28.703Z","0.0.3":"2011-04-06T01:31:33.011Z","0.0.4":"2011-04-06T02:30:08.725Z","0.0.5":"2011-04-06T03:15:44.469Z","0.0.6":"2011-04-07T01:39:19.207Z","0.0.8":"2011-04-12T18:26:56.422Z","0.0.9":"2011-04-13T23:06:36.210Z","0.0.10":"2011-04-14T06:05:56.924Z","0.1.0":"2011-04-14T17:48:27.546Z","0.1.3":"2011-04-26T20:10:58.883Z","0.1.4":"2011-04-27T06:09:28.799Z","0.1.5":"2011-04-27T07:53:48.195Z","0.1.6":"2011-04-27T20:12:01.833Z","0.1.7":"2011-05-03T04:01:02.207Z","0.2.0":"2011-05-03T04:17:13.225Z","0.2.1":"2011-05-03T09:46:27.610Z","0.2.2":"2011-05-07T23:50:31.331Z","0.2.3":"2011-05-09T19:00:21.781Z","0.2.4":"2011-06-01T01:10:34.828Z","0.2.5":"2011-06-04T21:38:23.165Z","0.2.6":"2011-06-06T01:52:56.831Z","0.2.7":"2011-06-06T21:09:30.809Z","0.2.8":"2011-06-11T07:01:42.484Z","0.2.9":"2011-06-15T01:09:28.928Z","0.2.10":"2011-06-17T23:31:24.455Z","0.2.11":"2011-06-18T05:26:15.189Z","0.2.12":"2011-06-21T22:14:18.192Z","0.2.13":"2011-06-27T11:35:32.857Z","0.2.14":"2011-07-01T20:41:37.553Z","0.2.15":"2011-07-06T07:30:24.114Z","0.2.16":"2011-07-15T01:05:36.321Z","0.2.17":"2011-07-20T18:20:38.618Z","0.2.18":"2011-08-02T21:20:27.829Z","0.2.19":"2011-09-13T18:38:48.945Z","0.2.20":"2011-09-13T19:48:41.709Z","0.2.21":"2011-10-07T01:20:16.925Z","0.2.22":"2011-10-07T01:27:45.249Z","0.2.23":"2011-10-07T01:40:37.086Z","0.2.24":"2011-11-26T11:10:46.667Z","0.2.25":"2011-11-26T21:10:51.432Z","0.2.26":"2011-11-27T00:29:13.733Z","0.2.27":"2011-11-28T00:33:10.007Z","0.2.28":"2012-01-03T19:52:29.945Z","0.2.29":"2012-01-20T22:04:26.526Z","0.2.30":"2012-02-03T22:39:51.922Z","0.2.31":"2012-03-06T08:07:54.826Z","0.2.32":"2012-03-07T09:08:12.155Z","0.2.33":"2012-08-08T18:54:43.555Z","0.2.34":"2012-08-08T19:15:04.527Z","0.3.0":"2012-08-08T19:31:29.738Z","0.3.1":"2012-10-16T21:31:22.735Z","0.3.2":"2013-06-05T06:37:23.360Z","0.4.0":"2013-06-05T08:42:15.065Z","0.4.2":"2013-06-06T05:48:01.634Z","0.4.3":"2013-06-06T08:22:50.913Z","0.4.4":"2013-06-17T07:22:07.925Z","0.4.5":"2013-07-02T10:08:14.954Z","0.4.6":"2014-02-27T22:37:32.664Z","0.4.7":"2014-10-15T17:45:26.690Z","0.4.8":"2014-10-17T23:42:09.449Z","0.4.9":"2014-10-17T23:51:56.204Z"},"author":{"name":"Brian Noguchi","email":"brian.noguchi@gmail.com","url":"https://github.com/bnoguchi/"},"repository":{"type":"git","url":"git://github.com/bnoguchi/everyauth.git"},"users":{"chrisdickinson":true,"m42am":true,"purywp":true,"utils":true,"maerf0x0":true,"ysk8":true,"ajduke":true,"grahamwalters":true,"piyushmakhija":true,"themadjoker":true,"1cr18ni9":true},"readme":"everyauth\n==========\n\nAuthentication and authorization (password, facebook, & more) for your node.js Connect and Express apps.\n\nThere is a NodeTuts screencast of everyauth [here](http://vimeo.com/26532298)\n\nThere is also a Google Groups (recently created)\n[here](http://groups.google.com/group/everyauth) to post questions and discuss\npotential ideas and extensions to the library.\n\nSo far, `everyauth` enables you to login via:\n\n<table style=\"text-align:left\">\n  <thead>\n    <tr>\n         <th> Authenticate Via                                                                                                             <th> Credits\n    </tr>\n  </thead>\n  <tbody>\n    <tr> <td> Password                                                                                                                     <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/facebook.ico\" style=\"vertical-align:middle\"> Facebook       <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/twitter.ico\" style=\"vertical-align:middle\"> Twitter         <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/google.ico\" style=\"vertical-align:middle\"> Google           <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/google.ico\" style=\"vertical-align:middle\"> Google Hybrid    <td> <a href=\"https://github.com/rocketlabsdev\">RocketLabs Development</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/linkedin.ico\" style=\"vertical-align:middle\"> LinkedIn       <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/dropbox.ico\" style=\"vertical-align:middle\"> Dropbox         <td> <a href=\"https://github.com/torgeir\">Torgeir</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/tumblr.jpg\" style=\"vertical-align:middle\"> Tumblr           <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/evernote.ico\" style=\"vertical-align:middle\"> Evernote         <td> <a href=\"https://github.com/dannyamey\">Danny Amey</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/github.ico\" style=\"vertical-align:middle\"> Github           <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/instagram.ico\" style=\"vertical-align:middle\"> Instagram     <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/foursquare.ico\" style=\"vertical-align:middle\"> Foursquare   <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/yahoo.ico\" style=\"vertical-align:middle\"> Yahoo!            <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/justintv.ico\" style=\"vertical-align:middle\"> Justin.tv      <td> <a href=\"https://github.com/slickplaid\">slickplaid</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/vimeo.gif\" style=\"vertical-align:middle\"> Vimeo             <td> <a href=\"https://github.com/slickplaid\">slickplaid</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/37signals.ico\" style=\"vertical-align:middle\"> 37signals \n                                                                                              (Basecamp, Highrise, Backpack, Campfire)     <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/readability.ico\" style=\"vertical-align:middle\"> Readability <td> <a href=\"https://github.com/alfrednerstu\">Alfred Nerstu</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/angellist.ico\" style=\"vertical-align:middle\" width=\"16px\" height=\"16px\"> AngelList     <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/dwolla.ico\" style=\"vertical-align:middle\"> Dwolla           <td> <a href=\"https://github.com/nanek\">Kenan Shifflett</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/osm.ico\" style=\"vertical-align:middle\"> OpenStreetMap       <td> <a href=\"https://github.com/christophlsa\">Christoph Giesel</a>\n    <tr> <td> <img src=\"https://github.com/meritt/everyauth/raw/vkontakte/media/vkontakte.ico\" style=\"vertical-align:middle\"> VKontakte (Russian Social Network) <td> <a href=\"https://github.com/meritt\">Alexey Simonenko</a>\n    <tr> <td> <img src=\"https://github.com/biggora/everyauth/raw/master/media/mailru.ico\" style=\"vertical-align:middle\"> Mail.ru (Russian Social Network) <td> <a href=\"https://github.com/biggora\">Alexey Gordeyev</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/skyrock.ico\" style=\"vertical-align:middle\" width=\"16px\" height=\"16px\"> Skyrock         <td> <a href=\"https://github.com/srod\">Rodolphe Stoclin</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/gowalla.ico\" style=\"vertical-align:middle\"> Gowalla         <td> <a href=\"https://github.com/andykram\">Andrew Kramolisch</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/tripit.png\" style=\"vertical-align:middle\"> TripIt           <td> <a href=\"https://github.com/pirxpilot\">Damian Krzeminski</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/500px.ico\" style=\"vertical-align:middle\"> 500px             <td> <a href=\"https://github.com/dannyamey\">Danny Amey</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/soundcloud.ico\" style=\"vertical-align:middle\"> SoundCloud   <td> <a href=\"https://github.com/chrisleishman\">Chris Leishman</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/mixi.ico\" style=\"vertical-align:middle\"> mixi\n       <td> <a href=\"https://github.com/ufssf\">ufssf</a>\n    <tr> <td> <img src=\"http://static.mailchimp.com/www/downloads/brand-assets/Freddie_Light_Background.png\" style=\"vertical-align:middle\" width=\"16px\"> Mailchimp\n      <td> <a href=\"http://github.com/wnadeau\">Winfred Nadeau</a>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/mendeley.ico\" style=\"vertical-align:middle\"> Mendeley\n       <td> <a href=\"https://github.com/edy-b\">Eduard Baun</a>\n    <tr> <td> <img src=\"https://github.com/Datahero/everyauth/raw/express3/media/stripe.ico\" style=\"vertical-align:middle;\" width=\"16px\" height=\"16px\"> Stripe\n       <td> <a href=\"https://github.com/jzabel\">Jeff Zabel</a> from <a href=\"http://www.datahero.com\"> Datahero </a>\n    <tr> <td> <img src=\"https://github.com/Datahero/everyauth/raw/express3/media/salesforce.ico\" style=\"vertical-align:middle\"> Salesforce\n       <td> <a href=\"https://github.com/jzabel\">Jeff Zabel</a> from <a href=\"http://www.datahero.com\"> Datahero </a>\n  </tbody>\n  <tbody id=misc>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/box.ico\" style=\"vertical-align:middle\"> Box.net             <td>\n    <tr> <td> <img src=\"https://github.com/bnoguchi/everyauth/raw/master/media/openid.ico\" style=\"vertical-align:middle\" width=\"16px\" height=\"16px\"> OpenId           <td> <a href=\"https://github.com/rocketlabsdev\">RocketLabs Development</a>, <a href=\"https://github.com/starfishmod\">Andrew Mee, <a href=\"https://github.com/bnoguchi\">Brian Noguchi</a> \n    <tr> <td> LDAP / ActiveDirectory                                                                                                       <td> <a href=\"https://github.com/marek-obuchowicz\">Marek Obuchowicz</a> from <a href=\"https://www.korekontrol.eu/\">Korekontrol</a>\n    <tr> <td> Windows Azure Access Control Service (ACS)<td> <a href=\"https://github.com/darrenzully\">Dario Renzulli</a>, <a href=\"https://github.com/jpgarcia\">Juan Pablo Garcia</a>, <a href=\"https://github.com/woloski\">Matias Woloski</a> from <a href=\"http://blogs.southworks.net/\">Southworks</a>\n  </tbody>\n</table>\n\n`everyauth` is:\n\n- **Modular** - We have you covered with Facebook and Twitter \n  OAuth logins, basic login/password support, and modules \n  coming soon for beta invitation support and more.\n- **Easily Configurable** - everyauth was built with powerful\n  configuration needs in mind. Configure an authorization strategy \n  in a straightforward, easy-to-read & easy-to-write approach, \n  with as much granularity as you want over the steps and \n  logic of your authorization strategy.\n- **Idiomatic** - The syntax for configuring and extending your authorization strategies are\n  idiomatic and chainable.\n\n\n## Installation\n    $ npm install everyauth\n\n## Quick Start\n\nIncorporate everyauth into your express app in just 2 easy steps.\n\n1. **Choose and Configure Auth Strategies** - Find the authentication strategy\n   you desire in one of the sections below. Follow the configuration\n   instructions.\n2. **Add the Middleware to Express**\n\n    ```javascript\n    var everyauth = require('everyauth');\n    // Step 1 code goes here\n\n    // Step 2 code\n    var express = require('express');\n    var app = express();\n    app\n      .use(express.bodyParser())\n      .use(express.cookieParser('mr ripley'))\n      .use(express.session())\n      .use(everyauth.middleware(app));\n    ```\n\n## Example Application\n\nThere is an example application at [./example](https://github.com/bnoguchi/everyauth/tree/master/example)\n\nTo run it:\n\n    $ cd example\n    $ node server.js\n\n**Important** - Some OAuth Providers do not allow callbacks to localhost, so you will need to create a `localhost`\nalias called `local.host`. Make sure you set up your /etc/hosts so that 127.0.0.1 is also \nassociated with 'local.host'. So inside your /etc/hosts file, one of the lines will look like:\n\n    127.0.0.1\tlocalhost local.host\n\nThen point your browser to [http://local.host:3000](http://local.host:3000)\n\n## Tests\n\n    $ npm install everyauth --dev\n\nThen, update test/creds.js with credentials that the integration tests use to\nlogin to each 3rd party service.\n\n    $ make test\n\n## Accessing the User\n\nIf you are using `express` or `connect`, then `everyauth` \nprovides an easy way to access the user as:\n\n- `req.user` from your app server\n- `everyauth.user` via the `everyauth` helper accessible from your `express` views.\n- `user` as a helper accessible from your `express` views\n\nTo access the user, configure `everyauth.everymodule.findUserById` and\noptionally `everyauth.everymodule.userPkey`.\nFor example, using [mongoose](http://github.com/LearnBoost/mongoose):\n\n```javascript\neveryauth.everymodule.findUserById( function (userId, callback) {\n  User.findById(userId, callback);\n  // callback has the signature, function (err, user) {...}\n});\n```\n\nIf you need access to the request object the function can have three arguments:\n\n```javascript\neveryauth.everymodule.findUserById( function (req, userId, callback) {\n\n  // use the request in some way ...\n\n  // callback has the signature, function (err, user) {...}\n});\n```\n\nOnce you have configured this method, you now have access to the user object\nthat was fetched anywhere in your server app code as `req.user`. For instance:\n\n```javascript\nvar app = require('express').createServer()\n\n// Configure your app\n\napp.get('/', function (req, res) {\n  console.log(req.user);  // FTW!\n  res.render('home');\n});\n```\n\nMoreover, you can access the user in your views as `everyauth.user` or as `user`.\n\n    //- Inside ./views/home.jade\n    span.user-id= everyauth.user.name\n    #user-id= user.id\n\n`everyauth` assumes that you store your users with an `id` property. If not --\ne.g, if you adopt the convention `user.uid` over `user.id` -- then just make\nsure to configure the `everyauth.everymodule.userPkey` parameter:\n\n```javascript\neveryauth.everymodule.userPkey('uid');\n```\n\n## Express Helpers\n\nIf you are using express, everyauth comes with some useful dynamic helpers.\nTo enable them:\n\n```javascript\nvar express = require('express')\n  , everyauth = require('everyauth')\n  , app = express.createServer();\n\neveryauth.helpExpress(app);\n```\n\nThen, from within your views, you will have access to the following helpers methods\nattached to the helper, `everyauth`:\n\n- `everyauth.loggedIn`\n- `everyauth.user` - the User document associated with the session\n- `everyauth.facebook` - The is equivalent to what is stored at `req.session.auth.facebook`, \n  so you can do things like ...\n- `everyauth.facebook.user` - returns the user json provided from the OAuth provider.\n- `everyauth.facebook.accessToken` - returns the access_token provided from the OAuth provider\n  for authorized API calls on behalf of the user.\n- And you also get this pattern for other modules - e.g., `everyauth.twitter.user`, \n  `everyauth.github.user`, etc.\n\nYou also get access to the view helper\n\n- `user` - the same as `everyauth.user` above\n\nAs an example of how you would use these, consider the following `./views/user.jade` jade template:\n\n    .user-id\n      .label User Id\n      .value #{user.id}\n    .facebook-id\n      .label User Facebook Id\n      .value #{everyauth.facebook.user.id}\n\nIf you already have an express helper named `user`, then you can configure\n`everyauth` to use a different helper name to access the user object that\neveryauth manages. To do so, leverage the `userAlias` option for\n`everyauth.helpExpress`:\n\n```javascript\neveryauth.helpExpress(app, { userAlias: '__user__' });\n```\n\nThen, you could access the user object in your view with the helper `__user__`\ninstead of the default helper `user`. So you can compare with the default use\nof helpers given previously, the alternative leveraging userAlias would look like:\n\n    .user-id\n      .label User Id\n      .value #{__user__.id}\n    .facebook-id\n      .label User Facebook Id\n      .value #{everyauth.facebook.user.id}\n\n`everyauth` also provides convenience methods on the `ServerRequest` instance `req`. \nFrom any scope that has access to `req`, you get the following convenience getters and methods:\n\n- `req.loggedIn` - a Boolean getter that tells you if the request is by a logged in user\n- `req.user`     - the User document associated with the session\n- `req.logout()` - clears the session of your auth data\n\n## Logging Out\n\nIf you integrate `everyauth` with `connect`, then `everyauth` automatically\nsets up a `logoutPath` at `GET` `/logout` for your app. It also\nsets a default handler for your logout route that clears your session\nof auth information and redirects them to '/'.\n\nTo over-write the logout path:\n\n```javascript\neveryauth.everymodule.logoutPath('/bye');\n```\n\nTo over-write the logout redirect path:\n\n```javascript\neveryauth.everymodule.logoutRedirectPath('/navigate/to/after/logout');\n```\n\nTo over-write the logout handler:\n\n```javascript\neveryauth.everymodule.handleLogout( function (req, res) {\n  // Put you extra logic here\n  \n  req.logout(); // The logout method is added for you by everyauth, too\n  \n  // And/or put your extra logic here\n  \n  this.redirect(res, this.logoutRedirectPath());\n});\n```\n\n## Custom redirect on password-based login or registration\n\nYou may want your own callback that decides where to send a user after login or registration.  One way of doing this is with the `respondToLoginSucceed` and `respondToRegistrationSucceed` methods.  This assumes that you have set a `.redirectTo` property on your `req.session` object:\n\n```javascript\neveryauth.password\n  .respondToLoginSucceed( function (res, user, data) {\n    if (user) {\n      this.redirect(res, data.session.redirectTo)\n    }   \n  })\n  .respondToRegistrationSucceed( function (res, user, data) {\n    this.redirect(res, data.session.redirectTo)\n  })\n```\n\nIf you are using express and want your redirects to be subject to [express\nredirect mapping](http://expressjs.com/guide.html#res.redirect\\(\\)), you can\noverwrite redirect method employed by everyauth.\n\n```javascript\neveryauth.everymodule\n  .performRedirect( function (res, location) {\n    res.redirect(location, 303);\n  });\n```\n\nA newly defined method will be used by everyauth to perform all redirects.\n\n# Auth Strategy Instructions\n\n## Facebook Connect\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.facebook\n  .appId('YOUR APP ID HERE')\n  .appSecret('YOUR APP SECRET HERE')\n  .handleAuthCallbackError( function (req, res) {\n    // If a user denies your app, Facebook will redirect the user to\n    // /auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request.\n    // This configurable route handler defines how you want to respond to\n    // that.\n    // If you do not configure this, everyauth renders a default fallback\n    // view notifying the user that their authentication failed and why.\n  })\n  .findOrCreateUser( function (session, accessToken, accessTokExtra, fbUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.facebook\n  .entryPath('/auth/facebook')\n  .callbackPath('/auth/facebook/callback')\n  .scope('email')                        // Defaults to undefined\n  .fields('id,name,email,picture')       // Controls the returned fields. Defaults to undefined\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.facebook.scope(); // undefined\neveryauth.facebook.fields(); // undefined\neveryauth.facebook.entryPath(); // '/auth/facebook'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.facebook.configurable();\n```\n\n### Dynamic Facebook Connect Scope\n\nFacebook provides many different \n[permissions](http://developers.facebook.com/docs/authentication/permissions/)\nfor which your app can ask your user. This is bundled up in the `scope` query\nparemter sent with the oauth request to Facebook. While your app may require \nseveral different permissions from Facebook, Facebook recommends that you only\nask for these permissions incrementally, as you need them. For example, you might\nwant to only ask for the \"email\" scope upon registration. At the same time, for\nanother user, you may want to ask for \"user_status\" permissions because they\nhave progressed further along in your application.\n\n`everyauth` enables you to specify the \"scope\" dynamically with a second\nvariation of the configurable `scope`. In addition to the first variation\nthat looks like:\n\n```javascript\neveryauth.facebook\n  .scope('email,user_status');\n```\n\nyou can have greater dynamic control over \"scope\" via the second variation of `scope`:\n\n```javascript\neveryauth.facebook\n  .scope( function (req, res) {\n    var session = req.session;\n    switch (session.userPhase) {\n      case 'registration':\n        return 'email';\n      case 'share-media':\n        return 'email,user_status';\n    }\n  });\n\n```\n\n### Facebook Mobile OAuth Dialog\nIf you are programming for mobile, you can bring up the facebook mobile OAuth\ndialog instead of the traditional desktop browser-based one by just adding\n`mobile(true)` to your configuration as seen here:\n\n```javascript\neveryauth.facebook\n  .mobile(true)\n  .appId('YOUR APP ID HERE')\n  .appSecret('YOUR APP SECRET HERE')\n  // rest of configuration\n```\n\n## Twitter OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.twitter\n  .consumerKey('YOUR CONSUMER ID HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenSecret, twitterUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\n**Important** - Some developers forget to do the following, and it causes them to have issues with `everyauth`.\nPlease make sure to do the following: When you set up your app at http://dev.twitter.com/, make sure that your callback url is set up to\ninclude that path '/auth/twitter/callback/'. In general, when dealing with OAuth or OAuth2 modules\nprovided by `everyauth`, the default callback path is always set up to follow the pattern\n'/auth/#{moduleName}/callback', so just ensure that you configure your OAuth settings accordingly with\nthe OAuth provider -- in this case, the \"Edit Application Settings\" section for your app at http://dev.twitter.com.\n\nAlternatively, you can specify the callback url at the application level by configuring `callbackPath` (which\nhas a default configuration of \"/auth/twitter/callback\"):\n\n```javascript\neveryauth.twitter\n  .consumerKey('YOUR CONSUMER ID HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .callbackPath('/custom/twitter/callback/path')\n  .findOrCreateUser( function (session, accessToken, accessTokenSecret, twitterUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n```\n\nSo if your hostname is `example.com`, then this configuration will over-ride the `dev.twitter.com` callback url configuration.\nInstead, Twitter will redirect back to `example.com/custom/twitter/callback/path` in the example just given above.\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.twitter\n  .entryPath('/auth/twitter')\n  .callbackPath('/auth/twitter/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.twitter.callbackPath(); // '/auth/twitter/callback'\neveryauth.twitter.entryPath(); // '/auth/twitter'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.twitter.configurable();\n```\n\n## Password Authentication\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.password\n  .getLoginPath('/login') // Uri path to the login page\n  .postLoginPath('/login') // Uri path that your login form POSTs to\n  .loginView('a string of html; OR the name of the jade/etc-view-engine view')\n  .authenticate( function (login, password) {\n    // Either, we return a user or an array of errors if doing sync auth.\n    // Or, we return a Promise that can fulfill to promise.fulfill(user) or promise.fulfill(errors)\n    // `errors` is an array of error message strings\n    //\n    // e.g., \n    // Example 1 - Sync Example\n    // if (usersByLogin[login] && usersByLogin[login].password === password) {\n    //   return usersByLogin[login];\n    // } else {\n    //   return ['Login failed'];\n    // }\n    //\n    // Example 2 - Async Example\n    // var promise = this.Promise()\n    // YourUserModel.find({ login: login}, function (err, user) {\n    //   if (err) return promise.fulfill([err]);\n    //   promise.fulfill(user);\n    // }\n    // return promise;\n  })\n  .loginSuccessRedirect('/') // Where to redirect to after a login\n  \n    // If login fails, we render the errors via the login view template,\n    // so just make sure your loginView() template incorporates an `errors` local.\n    // See './example/views/login.jade'\n\n  .getRegisterPath('/register') // Uri path to the registration page\n  .postRegisterPath('/register') // The Uri path that your registration form POSTs to\n  .registerView('a string of html; OR the name of the jade/etc-view-engine view')\n  .validateRegistration( function (newUserAttributes) {\n    // Validate the registration input\n    // Return undefined, null, or [] if validation succeeds\n    // Return an array of error messages (or Promise promising this array)\n    // if validation fails\n    //\n    // e.g., assuming you define validate with the following signature\n    // var errors = validate(login, password, extraParams);\n    // return errors;\n    //\n    // The `errors` you return show up as an `errors` local in your jade template\n  })\n  .registerUser( function (newUserAttributes) {\n    // This step is only executed if we pass the validateRegistration step without\n    // any errors.\n    //\n    // Returns a user (or a Promise that promises a user) after adding it to\n    // some user store.\n    //\n    // As an edge case, sometimes your database may make you aware of violation\n    // of the unique login index, so if this error is sent back in an async\n    // callback, then you can just return that error as a single element array\n    // containing just that error message, and everyauth will automatically handle\n    // that as a failed registration. Again, you will have access to this error via\n    // the `errors` local in your register view jade template.\n    // e.g.,\n    // var promise = this.Promise();\n    // User.create(newUserAttributes, function (err, user) {\n    //   if (err) return promise.fulfill([err]);\n    //   promise.fulfill(user);\n    // });\n    // return promise;\n    //\n    // Note: Index and db-driven validations are the only validations that occur \n    // here; all other validations occur in the `validateRegistration` step documented above.\n  })\n  .registerSuccessRedirect('/'); // Where to redirect to after a successful registration\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.password\n  .loginFormFieldName('login')       // Defaults to 'login'\n  .passwordFormFieldName('password') // Defaults to 'password'\n  .loginLayout('custom_login_layout') // Only with `express`\n  .registerLayout('custom reg_layout') // Only with `express`\n  .loginLocals(fn);                    // See Recipe 3 below\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.password.loginFormFieldName();    // 'login'\neveryauth.password.passwordFormFieldName(); // 'password'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.password.configurable();\n```\n\n### Password Recipe 1: Extra registration data\n\nSometimes your registration will ask for more information from the user besides the login and password.\n\nFor this particular scenario, you can configure the optional step, `extractExtraRegistrationParams`.\n\n```javascript\neveryauth.password.extractExtraRegistrationParams( function (req) {\n  return {\n      phone: req.body.phone\n    , name: {\n          first: req.body.first_name\n        , last: req.body.last_name\n      }\n  };\n});\n```\n\nThen, you will have access to this data from within your configured\n`validateRegistration` and `registerUser`:\n\n```javascript\neveryauth.password\n  .validateRegistration( function (newUserAttributes) {\n    var phone = newUserAttributes.phone\n      , firstName = newUserAttributes.name.first\n      , lastName = newUserAttributes.name.last;\n  })\n  .registerUser( function (newUserAttributes) {\n    var phone = newUserAttributes.phone\n      , firstName = newUserAttributes.name.first\n      , lastName = newUserAttributes.name.last;\n  });\n```\n\n### Password Recipe 2: Logging in with email or phone number\n\nBy default, `everyauth` uses the field and user key name `login` during the\nregistration and login process.\n\nSometimes, you want to use `email` or `phone` instead of `login`. Moreover,\nyou also want to validate `email` and `phone` fields upon registration.\n\n`everyauth` provides an easy way to do this:\n\n```javascript\neveryauth.password.loginWith('email');\n\n// OR\n\neveryauth.password.loginWith('phone');\n```\n\nWith simple login configuration like this, you get email (or phone) validation\nin addition to renaming of the form field and user key corresponding to what\notherwise would typically be referred to as 'login'.\n\n### Password Recipe 3: Adding additional view local variables to login and registration views\n\nIf you are using `express`, you are able to pass variables from your app\ncontext to your view context via local variables. `everyauth` provides\nseveral convenience local vars for your views, but sometimes you will want\nto augment this set of local vars with additional locals.\n\nSo `everyauth` also provides a mechanism for you to do so via the following\nconfigurables:\n\n```javascript\neveryauth.password.loginLocals(...);\neveryauth.password.registerLocals(...);\n```\n\n`loginLocals` and `registerLocals` configuration have symmetrical APIs, so I\nwill only cover `loginLocals` here to illustrate how to use both.\n\nYou can configure this parameter in one of *3* ways. Why 3? Because there are 3 types of ways that you can retrieve your locals.\n\n1. Static local vars that never change values:\n   \n       ```javascript\n       everyauth.password.loginLocals({\n         title: 'Login'\n       });\n       ```\n2. Dynamic synchronous local vars that depend on the incoming request, but whose values are retrieved synchronously\n   \n       ```javascript\n       everyauth.password.loginLocals( function (req, res) {\n         var sess = req.session;\n         return {\n           isReturning: sess.isReturning\n         };\n       });\n       ```\n3. Dynamic asynchronous local vars\n   \n       ```javascript\n       everyauth.password.loginLocals( function (req, res, done) {\n         asyncCall( function ( err, data) {\n           if (err) return done(err);\n           done(null, {\n             title: il8n.titleInLanguage('Login Page', il8n.language(data.geo))\n           });\n         });\n       });\n       ```\n\n### Password Recipe 4: Customize Your Registration Validation\n\nBy default, `everyauth.password` automatically\n\n- validates that the login (or email or phone, depending on what you authenticate with -- see Password Recipe 2) is present in the login http request, \n- validates that the password is present\n- validates that an email login is a correctly formatted email\n- validates that a phone login is a valid phone number\n\nIf any of these validations fail, then the appropriate errors are generated and accessible to you in your view via the `errors` view local variable.\n\nIf you want to add additional validations beyond this, you can do so by configuring the step, `validateRegistration`:\n\n```javascript\neveryauth.password\n  .validateRegistration( function (newUserAttributes, baseErrors) {\n    // Here, newUserAttributes is the hash of parameters extracted from the incoming request.\n    // baseErrors is the array of errors generated by the default automatic validation outlined above\n    //   in this same recipe.\n\n    // First, validate your errors. Here, validateUser is a made up function\n    var moreErrors = validateUser( newUserAttributes );\n    if (moreErrors.length) baseErrors.push.apply(baseErrors, moreErrors);\n\n    // Return the array of errors, so your view has access to them.\n    return baseErrors;\n  });\n```\n\n### Password Recipe 5: Password Hashing\n\nBy default, everyauth is agnostic about how you decide to store your users and\ntherefore passwords. However, one should *always* use password hashing and\nsalting for security.\n\nHere's an example of how to incorporate password hashing into everyauth using\nbcrypt hashing. The idea is to store a salt and hash value inside your user object\ninstead of the password. The hash value is generated from the password (sent with a\nregistration or login request) and unique salt per user, using the bcrypt algorithm.\n\n```javascript\n// Make sure to `npm install bcrypt`\nvar bcrypt = require('bcrypt');\n\neveryauth.password\n  .registerUser( function (newUserAttrs) {\n    var promise = this.Promise()\n      , password = newUserAttrs.password;\n\n    delete newUserAttrs[password]; // Don't store password\n    newUserAttrs.salt = bcrypt.genSaltSync(10);\n    newUserAttrs.hash = bcrypt.hashSync(password, salt);\n\n    // Create a new user in your data store\n    createUser( newUserAttrs, function (err, createdUser) {\n      if (err) return promise.fail(err);\n      return promise.fulfill(createdUser);\n    });\n\n    return promise;\n  })\n  .authenticate( function (login, password) {\n    var promise\n      , errors = [];\n    if (!login) errors.push('Missing login.');\n    if (!password) errors.push('Missing password.');\n    if (errors.length) return errors;\n\n    promise = this.Promise();\n\n    // findUser passes an error or user to a callback after finding the\n    // user by login\n    findUser( login, function (err, user) {\n      if (err) {\n        errors.push(err.message || err);\n        return promise.fulfill(errors);\n      }\n      if (!user) {\n        errors.push('User with login ' + login + ' does not exist.');\n        return promise.fulfill(errors);\n      }\n      bcrypt.compare(password, user.hash, function (err, didSucceed) {\n        if (err) {\n          return promise.fail(err);\n          errors.push('Wrong password.');\n          return promise.fulfill(errors);\n        }\n        if (didSucceed) return promise.fulfill(user);\n        errors.push('Wrong password.');\n        return promise.fulfill(errors);\n      });\n    });\n\n    return promise;\n  })\n```\n\n## Other Modules\n\n### GitHub OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.github\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, , accessTokenExtra, githubUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n  \n```javascript\neveryauth.github\n  .entryPath('/auth/github')\n  .callbackPath('/auth/github/callback')\n  .scope('repo'); // Defaults to undefined\n                  // Can be set to a combination of: 'user', 'public_repo', 'repo', 'gist'\n                  // For more details, see http://develop.github.com/p/oauth.html\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.github.scope(); // undefined\neveryauth.github.entryPath(); // '/auth/github'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.github.configurable();\n```\n\n### Instagram OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.instagram\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, instagramUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.instagram\n  .entryPath('/auth/instagram')\n  .callbackPath('/auth/instagram/callback')\n  .scope('basic') // Defaults to 'basic'\n                  // Can be set to a combination of: 'basic', 'comments', 'relationships', 'likes'\n                  // For more details, see http://instagram.com/developer/auth/#scope\n  .display(undefined); // Defaults to undefined; Set to 'touch' to see a mobile optimized version\n                       // of the instagram auth page\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.instagram.callbackPath(); // '/auth/instagram/callback'\neveryauth.instagram.entryPath(); // '/auth/instagram'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.instagram.configurable();\n```\n\n### Foursquare OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.foursquare\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, foursquareUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.foursquare\n  .entryPath('/auth/foursquare')\n  .callbackPath('/auth/foursquare/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.foursquare.callbackPath(); // '/auth/foursquare/callback'\neveryauth.foursquare.entryPath(); // '/auth/foursquare'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.foursquare.configurable();\n```\n\n### LinkedIn OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.linkedin\n  .consumerKey('YOUR CONSUMER ID HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenSecret, linkedinUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.linkedin\n  .entryPath('/auth/linkedin')\n  .callbackPath('/auth/linkedin/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.linkedin.callbackPath(); // '/auth/linkedin/callback'\neveryauth.linkedin.entryPath(); // '/auth/linkedin'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.linkedin.configurable();\n```\n\n### Google OAuth2\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.google\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .scope('https://www.google.com/m8/feeds') // What you want access to\n  .handleAuthCallbackError( function (req, res) {\n    // If a user denies your app, Google will redirect the user to\n    // /auth/facebook/callback?error=access_denied\n    // This configurable route handler defines how you want to respond to\n    // that.\n    // If you do not configure this, everyauth renders a default fallback\n    // view notifying the user that their authentication failed and why.\n  })\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, googleUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.google\n  .entryPath('/auth/google')\n  .callbackPath('/auth/google/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.google.scope(); // undefined\neveryauth.google.entryPath(); // '/auth/google'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.google.configurable();\n```\n\n### Gowalla OAuth2\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.gowalla\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .handleAuthCallbackError( function (req, res) {\n    // TODO - Update this documentation\n    // This configurable route handler defines how you want to respond to\n    // a response from Gowalla that something went wrong during the oauth2 process.\n    // If you do not configure this, everyauth renders a default fallback\n    // view notifying the user that their authentication failed and why.\n  })\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, gowallaUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.gowalla\n  .entryPath('/auth/gowalla')\n  .callbackPath('/auth/gowalla/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.gowalla.scope(); // undefined\neveryauth.gowalla.entryPath(); // '/auth/gowalla'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.gowalla.configurable();\n```\n\n### 37signals (Basecamp, Highrise, Backpack, Campfire) OAuth2\n\nFirst, register an app at [integrate.37signals.com](https://integrate.37signals.com).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth['37signals']\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .handleAuthCallbackError( function (req, res) {\n    // TODO - Update this documentation\n    // This configurable route handler defines how you want to respond to\n    // a response from 37signals that something went wrong during the oauth2 process.\n    // If you do not configure this, everyauth renders a default fallback\n    // view notifying the user that their authentication failed and why.\n  })\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, _37signalsUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth['37signals']\n  .entryPath('/auth/37signals')\n  .callbackPath('/auth/37signals/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth['37signals'].entryPath(); // '/auth/37signals'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth['37signals'].configurable();\n```\n\n### AngelList OAuth2\n\nFirst, register an app [on AngelList](http://angel.co/api/oauth/clients).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.angellist\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR TOKEN HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, angelListUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.angellist\n  .entryPath('/auth/angellist')\n  .callbackPath('/auth/angellist/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.angellist.entryPath(); // '/auth/angellist'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.angellist.configurable();\n```\n\n### Dwolla OAuth2\n\nFirst, register an app [on Dwolla](http://www.dwolla.com/developers).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.dwolla\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR TOKEN HERE')\n  .scope('accountinfofull')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, dwollaUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n```\n\n### Skyrock OAuth\n\nFirst, register an app [on Skyrock](http://www.skyrock.com/developer/).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.skyrock\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, skyrockUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\n### VKontakte OAuth2\n\nFirst, register an app [on VKontakte](http://vk.com/editapp?act=create&site=1).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.vkontakte\n  .appId('YOUR APP ID HERE')\n  .appSecret('YOUR TOKEN HERE')\n  .scope('photo')\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, vkUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes)\n).listen(3000);\n```\n\n### Mail.ru OAuth2\n\nFirst, register an app [on mail.ru](http://api.mail.ru/apps/my/add/).\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.mailru\n    .appId('YOUR CONSUMER KEY HERE')\n    .appSecret('YOUR CONSUMER SECRET HERE')\n    .scope('messages')\n    .entryPath('/auth/mailru')\n    .callbackPath('/auth/mailru/callback')\n    .findOrCreateUser( function (session, accessToken, accessTokenExtra, mailruUser)  {\n          // find or create user logic goes here\n          // Return a user or Promise that promises a user\n          // Promises are created via\n          // var promise = this.Promise();\n          // return promise;\n    })\n    .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\n### Yahoo OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.yahoo\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (session, accessToken, accessTokenSecret, yahooUserMetadata) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.yahoo\n  .entryPath('/auth/yahoo')\n  .callbackPath('/auth/yahoo/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.yahoo.callbackPath(); // '/auth/yahoo/callback'\neveryauth.yahoo.entryPath(); // '/auth/yahoo'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.yahoo.configurable();\n```\n\n### Readability OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.readability\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, reader) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByReadabilityId[reader.username] || (usersByReadabilityId[reader.username] = reader);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.readability\n  .entryPath('/auth/readability')\n  .callbackPath('/auth/readability/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.readability.callbackPath(); // '/auth/readability/callback'\neveryauth.readability.entryPath(); // '/auth/readability'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.readability.configurable();\n```\n\n### Dropbox OAuth\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.dropbox\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByDropboxId[user.uid] || (usersByDropboxId[user.uid] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.dropbox\n  .entryPath('/auth/dropbox')\n  .callbackPath('/auth/dropbox/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.dropbox.callbackPath(); // '/auth/dropbox/callback'\neveryauth.dropbox.entryPath(); // '/auth/dropbox'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.dropbox.configurable();\n```\n\n### Justin.tv OAuth\n\n[Sign up for a Justin.tv account](http://www.justin.tv/user/signup) and activate it as a [developer account](http://www.justin.tv/developer/activate) to get your consumer key and secret.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n  \neveryauth.justintv\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, justintvUser) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByJustintvId[justintvUser.id] || (usersByJustintvId[justintvUser.id] = justintvUser);\n  })\n  .redirectPath('/');\n  \nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nThe `justintvUser` parameter in the `.findOrCreateUser()` function above returns the `account/whoami` API call\n\n[Justin.tv API Wiki - Account/whoami](http://apiwiki.justin.tv/mediawiki/index.php/Account/whoami)\n\n```javascript\n{\n   \"image_url_huge\": \"http:\\/\\/static-cdn.justin.tv\\/jtv_user_pictures\\/justin-320x240-4.jpg\",\n   \"profile_header_border_color\": null,\n   \"favorite_quotes\": \"I love Justin.tv\",\n   \"sex\": \"Male\",\n   \"image_url_large\": \"http:\\/\\/static-cdn.justin.tv\\/jtv_user_pictures\\/justin-125x94-4.jpg\",\n   \"profile_about\": \"Check out my website:\\n\\nwww.justin.tv\\n\",\n   \"profile_background_color\": null,\n   \"image_url_medium\": \"http:\\/\\/static-cdn.justin.tv\\/jtv_user_pictures\\/justin-75x56-4.jpg\",\n   \"id\": 1698,\n   \"broadcaster\": true,\n   \"profile_url\": \"http:\\/\\/www.justin.tv\\/justin\\/profile\",\n   \"profile_link_color\": null,\n   \"image_url_small\": \"http:\\/\\/static-cdn.justin.tv\\/jtv_user_pictures\\/justin-50x37-4.jpg\",\n   \"profile_header_text_color\": null,\n   \"name\": \"The JUST UN\",\n   \"image_url_tiny\": \"http:\\/\\/static-cdn.justin.tv\\/jtv_user_pictures\\/justin-33x25-4.jpg\",\n   \"login\": \"justin\",\n   \"profile_header_bg_color\": null,\n   \"location\": \"San Francisco\"\n}\n```\n\nYou can also configure more parameters (most are set to defaults) via the same chainable API:\n\n```javascript\neveryauth.justintv\n  .entryPath('/auth/justintv')\n  .callbackPath('/auth/justintv/callback');\n```\n\nIf you want to see what the current value of a configured parameter is, you can do so via:\n\n```javascript\neveryauth.justintv.callbackPath(); // '/auth/justintv/callback'\neveryauth.justintv.entryPath(); // '/auth/justintv'\n```\n\nTo see all parameters that are configurable, the following will return an object whose parameter name keys map to description values:\n\n```javascript\neveryauth.justintv.configurable();\n```\n\n### Vimeo OAuth\n\nYou will first need to sign up for a [developer application](http://vimeo.com/api/applications) to get the consumer key and secret.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.vimeo\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByVimeoId[user.id] || (usersByVimeoId[user.id] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.vimeo\n  .entryPath('/auth/vimeo')\n  .callbackPath('/auth/vimeo/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.vimeo.callbackPath(); // '/auth/vimeo/callback'\neveryauth.vimeo.entryPath(); // '/auth/vimeo'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.vimeo.configurable();\n```\n\n### Tumblr OAuth (1.a)\n\nYou will first need to [register an app](http://www.tumblr.com/oauth/register) to get the consumer key and secret.\nDuring registration of your new app, enter a \"Default callback URL\" of \"http://<hostname>:<port>/auth/tumblr/callback\".\nOnce you register your app, copy down your \"OAuth Consumer Key\" and \"Secret Key\" and proceed below.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.tumblr\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByTumblrName[user.name] || (usersByTumblrName[user.name] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.tumblr\n  .entryPath('/auth/tumblr')\n  .callbackPath('/auth/tumblr/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.tumblr.callbackPath(); // '/auth/tumblr/callback'\neveryauth.tumblr.entryPath(); // '/auth/tumblr'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.tumblr.configurable();\n```\n\n### Evernote OAuth (1.a)\n\nYou will first need to [request an API key](http://www.evernote.com/about/developer/api/#key) to get the consumer key and secret.  Note that this consumer key and secret will only be valid for the sandbox rather than the production OAuth host.  By default the Evernote module will use the production host, so you'll need to override this using the chainable API if you're using the sandbox.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.evernote\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByEvernoteId[user.userId] || (usersByEvernoteId[user.userId] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.evernote\n  .oauthHost('https://sandbox.evernote.com')\n  .entryPath('/auth/evernote')\n  .callbackPath('/auth/evernote/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.evernote.oauthHost(); // 'https://sandbox.evernote.com'\neveryauth.evernote.callbackPath(); // '/auth/evernote/callback'\neveryauth.evernote.entryPath(); // '/auth/evernote'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.evernote.configurable();\n```\n\n### OpenStreetMap OAuth\n\nYou will first need to [login to OpenStreetMap](http://www.openstreetmap.org). Then register you application on your OpenStreetMap user page via the View my OAuth details link on the bottom of the page to get the consumer key and secret. The registered application does not need any permission listed there to login via OAuth.\n\n```javascript\nvar everyauth = require('osm')\n  , connect = require('connect');\n\neveryauth.osm\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersByOSMId[user.id] || (usersByOSMId[user.id] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.osm\n  .oauthHost('http://api06.dev.openstreetmap.org')\n  .entryPath('/auth/osm')\n  .callbackPath('/auth/osm/callback');\n```\n\nIf you want to see what the current value of a\nconfigured parameter is, you can do so via:\n\n```javascript\neveryauth.osm.oauthHost(); // 'http://api.openstreetmap.org'\neveryauth.osm.callbackPath(); // '/auth/osm/callback'\neveryauth.osm.entryPath(); // '/auth/osm'\n```\n\nTo see all parameters that are configurable, the following will return an\nobject whose parameter name keys map to description values:\n\n```javascript\neveryauth.osm.configurable();\n```\n\n### TripIt OAuth (1.0)\n\nObtain consumer key and consumer secret for your app by [registering it](http://www.tripit.com/developer/create).\nPlease note that TripIt is using _API Key_ and _API Secret_ terminology: use those values as describe below.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.tripit\n  .consumerKey('YOUR API KEY')\n  .consumerSecret('YOUR API SECRET')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, tripitProfile) {\n    // find or create user logic goes here\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\n### 500px OAuth (1.0)\n\nYou will first need to [request an API key](http://developer.500px.com/oauth_clients/new) to get the consumer key and secret.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth['500px']\n  .consumerKey('YOUR CONSUMER KEY HERE')\n  .consumerSecret('YOUR CONSUMER SECRET HERE')\n  .findOrCreateUser( function (sess, accessToken, accessSecret, user) {\n    // find or create user logic goes here\n    //\n    // e.g.,\n    // return usersBy500pxId[user.userId] || (usersBy500pxId[user.userId] = user);\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\n### SoundCloud OAuth2\n\nYou will first need to [register an app](http://soundcloud.com/you/apps) to get the client id and secret.\nDuring registration of your new app, enter a \"Default callback URL\" of \"http://<hostname>:<port>/auth/soundcloud/callback\".\nOnce you register your app, copy down your \"Client ID\" and \"Client Secret\" and proceed below.\n\n```javascript\nvar everyauth = require('everyauth')\n  , connect = require('connect');\n\neveryauth.soundcloud\n  .appId('YOUR CLIENT ID HERE')\n  .appSecret('YOUR CLIENT SECRET HERE')\n  .handleAuthCallbackError( function (req, res) {\n    // TODO - Update this documentation\n    // This configurable route handler defines how you want to respond to\n    // a response from SoundCloud that something went wrong during the oauth2 process.\n    // If you do not configure this, everyauth renders a default fallback\n    // view notifying the user that their authentication failed and why.\n  })\n  .findOrCreateUser( function (session, accessToken, accessTokenExtra, soundcloudUserMetadata) {\n    // find or create user logic goes here\n    // Return a user or Promise that promises a user\n    // Promises are created via\n    //     var promise = this.Promise();\n  })\n  .redirectPath('/');\n\nvar routes = function (app) {\n  // Define your routes here\n};\n\nconnect(\n    connect.bodyParser()\n  , connect.cookieParser()\n  , connect.session({secret: 'whodunnit'})\n  , everyauth.middleware()\n  , connect.router(routes);\n).listen(3000);\n```\n\nYou can also configure more parameters (most are set to defaults) via\nthe same chainable API:\n\n```javascript\neveryauth.soundcloud\n  .entryPath('/auth/soundcloud')\n  .callback","homepage":"https://github.com/bnoguchi/everyauth/","keywords":["auth","oauth","password","facebook","openid","twitter","dropbox","authorization","authentication","connect","express"],"bugs":{"url":"https://github.com/bnoguchi/everyauth/issues"},"readmeFilename":"README.md"}