2016-03-11 58 views
0

您好,貝爾/ hapi開發人員和/或專家......預先感謝您的任何建議......我正在嘗試爲oauth完成一個forcedotcom策略(salesforce) ,它幾乎可以工作,並且我找不到任何有關錯誤的文檔。使用OAUTH2和Salesforce的NodeJS HapiJS(force.com)

我得到一個錯誤「[錯誤:未能獲得定製的訪問令牌]」

我的應用程序正確地重定向到Salesforce,提示登錄在Salesforce的域,驗證,並妥善返回到回調URL,但是,回調URL路由/控制器失敗,因爲「isAuthenticated」爲false,但我可以在請求中看到,從salesforce返回到回調的URL包含「代碼」參數(auth訪問令牌和「狀態」值。 )

這裏是我的策略

// Register bell with the server 
 
server.register(require('bell'), function(err) { 
 
    server.auth.strategy('forcedotcom', 'bell', { 
 
    provider: { 
 
     protocol: 'oauth2', 
 
     useParamsAuth: false, 
 
     auth: config.forcedotcom.authURL, 
 
     token: config.forcedotcom.tokenURL 
 
    }, 
 
    isSecure: false, 
 
    clientId: config.forcedotcom.clientID, 
 
    clientSecret: config.forcedotcom.clientSecret, 
 
    password: config.sessionCookie.sessionSecret, 
 
    location: config.forcedotcom.callbackURL 
 
    }); 
 
});

這裏是回調路線(在callbackURL

的配置

server.route({ 
 
    method: ['GET', 'POST'], 
 
    path: '/auth/forcedotcom/callback', 
 
    config: { 
 
    auth: { 
 
     strategy: 'forcedotcom', 
 
     mode: 'try' 
 
    }, 
 
    handler: function(request, reply) { 
 
     console.warn('request', request, 'reply', reply); 
 
     if (!request.auth.isAuthenticated) { 
 
     return reply('Authentication failed due to: ' + request.auth.error.message); 
 
     } 
 

 
     return reply.redirect('/'); 
 
    } 
 
    } 
 
});

指定的任何方向將是驚人的。謝謝!

+0

在hapi的開發者的幫助下,我們看到第二個調用/令牌請求中有400個來自salesforce ...與hapi無關的另一個帖子通過uri解碼來自salesforce的oauth代碼(第一個響應)發送到令牌回調。我不知道如何用hapi來做到這一點,但我們正在接近。 [類似但不同的問題解決](http://salesforce.stackexchange.com/questions/43878/400-bad-request-in-response) – sol

回答

0

我相信你需要設置useParamAuthtrue。 Salesforce需要client_secretclient_id作爲查詢參數而不是標題。

您也可以嘗試此庫https://www.npmjs.com/package/hapi-salesforce-auth-suite,其中包括signrequest auth以及oauth。

+1

這是問題的一部分,另一部分,我慚愧要說的是cookie的SSL設置,使用SSL cookie在本地主機上進行測試,並且從http瀏覽不會正確設置cookie。 :( – sol