2013-07-11 2 views
0

나는 링크 단 축기를 사용하고 사용자의 메트릭을 추적 할 수 있도록 약간의 인증을 시도하고 있습니다.bitly 전략을 사용하여 node.js에서 여권 인증을 구현하십시오.

passport.use(new BitlyStrategy({ 
    clientID: "my client id here", 
    clientSecret: "my secret here", 
    callbackURL: "http://website.com/auth/bitly/callback" 
}, 
function (token, tokenSecret, profile, done) { 
// Code to put it in the server here. 
} 
)); 

그리고 경로는 다음과 같다 : 내 구현은 다음과 같다

app.get('/auth/bitly', 
    passport.authenticate('bitly')); 

app.get('/auth/bitly/callback', 
passport.authenticate('bitly', { failureRedirect: '/', failureFlash: true, failureFlash: 'Invalid bitly Authentication try again.' }), 
function(req, res) { 
    // Successful authentication, redirect home. 
    res.redirect('/'); 
}); 

지금은 내가이 작업을 얻을 생각할 수있는 모든 일을했지만, 난 항상 바보 마련 오류 :

Application has thrown an uncaught exception and is terminated: 
TypeError: Parameter 'url' must be a string, not undefined 
at Object.urlParse [as parse] (url.js:92:11) 
at [object Object]._request (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\node_modules\oauth\lib\oauth2.js:56:22) 
at [object Object].get (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\node_modules\oauth\lib\oauth2.js:196:8) 
at Strategy.userProfile (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\lib\passport-bitly\strategy.js:76:16) 
at loadIt (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\lib\passport-oauth\strategies\oauth2.js:221:17) 
at Strategy._loadUserProfile (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\lib\passport-oauth\strategies\oauth2.js:236:25) 
at C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\lib\passport-oauth\strategies\oauth2.js:127:14 
at C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\node_modules\oauth\lib\oauth2.js:178:7 
at passBackControl (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\node_modules\oauth\lib\oauth2.js:107:9) 
at IncomingMessage.<anonymous> (C:\DWASFiles\Sites\twitter-mongo\VirtualDirectory0\site\wwwroot\node_modules\passport-bitly\node_modules\passport-oauth\node_modules\oauth\lib\oauth2.js:124:7 

누구나 어떤 의미인지 알 수 있으며 어디에서 수정해야합니까?

+1

스크립트 상단에'Error.stackTraceLimit = Infinity;'를 넣으십시오. 오류가 발생한 위치를 확인하는 데 도움이됩니다. –

답변

2

우리는 여기에 여권 라이브러리 슈퍼 익숙하지 않은하지만 우리는 최근에 여기 Node.js를 포함한 여러 언어로 몇 가지 간단한 OAuth를 코드 예제 게시 : http://bit.ly/bitlyoauthexamples

+0

고마워요! 나는 여권을 사용하는 것을 잊어 버리고 그냥 대신 사용하는 것 같아요. – milestyle

+0

링크가 깨졌습니다. –

3

난 그냥 passport-bitly의 버그를 수정 및 끌어 오기 요청을 : https://github.com/dreadjr/passport-bitly/pull/1

@Bitly API : 패스포트는 노드 세계에서 액세스 토큰을 얻는 일반적인 방법이므로이 전략을 사용하는 것이 좋습니다.

0

dreadjs의 여권 비트 전략을 사용하는 경우이 오류가 발생합니다. strategy.js 파일을 simo's fork의 파일로 바꿉니다.

현재이 Simo의 수정 사항은 dreadjr의 여권 비트 저장소로 병합되지 않았습니다. 나는 그 수정이 효과가 있음을 확인할 수있다. 기본적으로 _profileUrl의 원래 낙타는 strategy.js의 49 행에 _profileURL이어야합니다. 올바른 줄은 다음과 같습니다.

this._profileURL = options.profileURL || 'https://api-ssl.bitly.com/v3/user/info'; 

필요한 JSON 정보를 검색 할 때 변경된 사항이 있습니다.

관련 문제