应该在 facebook 重定向 uri 中实现什么?
what should be implemented in the facebook redirect uri?
我有一个带有 satellizer 的 angular 1.5.0-rc0 应用程序,以便登录 facebook。
网站连接到 https://myalcoholist.com:8888
的 nodejs 服务器
要使用 facebook 配置 satellizer,我有以下代码:
app.config(function($authProvider) {
$authProvider.facebook({
clientId: '226393057557099',
url: 'https://myalcoholist.com:8888/auth/facebook',
redirectUri: 'https://myalcoholist.com'
});
});
和我的 angular 登录控制器代码:
(function () {
angular.module('myalcoholist').controller('LoginController',['$scope','$auth','$location', 'toastr',function ($scope,$auth,$location,toastr) {
$scope.authenticate = function (provider) {
$auth.authenticate(provider).then(function () {
toastr.success('You have successfully signed in with ' + provider + '!');
$location.path('/');
})
.catch(function (error) {
if (error.error) {
// Popup error - invalid redirect_uri, pressed cancel button, etc.
toastr.error(error.error);
} else if (error.data) {
toastr.error(error.data.message, error.status);
} else {
toastr.error(error);
}
}
)
}
}]);
})();
我的 nodejs 应用程序使用 restify 框架来处理请求
我将其配置为路由:
server.post('/auth/:provider', function (req,res,next) {
require(post_commands_dir + 'auth.js')(req,res,next);
})
并且auth.js包含
var FB = require('fb');
function auth(req, res, next) {
var clientId = req.params.clientId;
var code = req.params.code;
var provider = req.params.provider;
FB.api('oauth/access_token', {
client_id: '<CLIENT_ID>',
client_secret: '<CLIENT_SECRET>',
redirect_uri: 'https://myalcoholist.com',
code: code
}, function (response) {
if(!response || response.error) {
console.log(!response ? 'error occurred' : response.error);
return;
}
var accessToken = response.access_token;
res.send(JSON.stringify({token:accessToken}));
// var expires = response.expires ? response.expires : 0;
});
}
module.exports = auth;
在我的 angular 项目视图中,我有一个按钮调用我添加到范围的身份验证功能。当我点击登录时,它会打开一个 facebook 弹出窗口,我点击允许,然后它关闭弹出窗口并在后台执行 post 请求 https://myalcoholist.com:8888/auth/facebook 代码。当我尝试使用 auth.js
中的代码将代码转换为访问令牌时,出现以下错误:
{ message: 'Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request',
type: 'OAuthException',
code: 100,
fbtrace_id: 'B09qSPJS08d' }
现在在 Facebook 控制台中,我将 Valid OAuth redirect URIs
配置为 https://myalcoholist.com
现在我认为我可能弄错了 redirect_uri,我应该以不同的方式实现它。我只是不知道怎么办。有什么想法吗?
在 facebook 应用程序开发者控制台中,当我将 https://myalcoholist.com
添加到 OAuth 回调 Url 时,它会自动向其添加 /
。这就是我在 API 服务器中所缺少的。 redirect_url 在 api 服务器配置为 https://myalcoholist.com
没有结尾 /
.
欢迎问题解决。
我有一个带有 satellizer 的 angular 1.5.0-rc0 应用程序,以便登录 facebook。
网站连接到 https://myalcoholist.com:8888
的 nodejs 服务器要使用 facebook 配置 satellizer,我有以下代码:
app.config(function($authProvider) {
$authProvider.facebook({
clientId: '226393057557099',
url: 'https://myalcoholist.com:8888/auth/facebook',
redirectUri: 'https://myalcoholist.com'
});
});
和我的 angular 登录控制器代码:
(function () {
angular.module('myalcoholist').controller('LoginController',['$scope','$auth','$location', 'toastr',function ($scope,$auth,$location,toastr) {
$scope.authenticate = function (provider) {
$auth.authenticate(provider).then(function () {
toastr.success('You have successfully signed in with ' + provider + '!');
$location.path('/');
})
.catch(function (error) {
if (error.error) {
// Popup error - invalid redirect_uri, pressed cancel button, etc.
toastr.error(error.error);
} else if (error.data) {
toastr.error(error.data.message, error.status);
} else {
toastr.error(error);
}
}
)
}
}]);
})();
我的 nodejs 应用程序使用 restify 框架来处理请求 我将其配置为路由:
server.post('/auth/:provider', function (req,res,next) {
require(post_commands_dir + 'auth.js')(req,res,next);
})
并且auth.js包含
var FB = require('fb');
function auth(req, res, next) {
var clientId = req.params.clientId;
var code = req.params.code;
var provider = req.params.provider;
FB.api('oauth/access_token', {
client_id: '<CLIENT_ID>',
client_secret: '<CLIENT_SECRET>',
redirect_uri: 'https://myalcoholist.com',
code: code
}, function (response) {
if(!response || response.error) {
console.log(!response ? 'error occurred' : response.error);
return;
}
var accessToken = response.access_token;
res.send(JSON.stringify({token:accessToken}));
// var expires = response.expires ? response.expires : 0;
});
}
module.exports = auth;
在我的 angular 项目视图中,我有一个按钮调用我添加到范围的身份验证功能。当我点击登录时,它会打开一个 facebook 弹出窗口,我点击允许,然后它关闭弹出窗口并在后台执行 post 请求 https://myalcoholist.com:8888/auth/facebook 代码。当我尝试使用 auth.js
中的代码将代码转换为访问令牌时,出现以下错误:
{ message: 'Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request',
type: 'OAuthException',
code: 100,
fbtrace_id: 'B09qSPJS08d' }
现在在 Facebook 控制台中,我将 Valid OAuth redirect URIs
配置为 https://myalcoholist.com
现在我认为我可能弄错了 redirect_uri,我应该以不同的方式实现它。我只是不知道怎么办。有什么想法吗?
在 facebook 应用程序开发者控制台中,当我将 https://myalcoholist.com
添加到 OAuth 回调 Url 时,它会自动向其添加 /
。这就是我在 API 服务器中所缺少的。 redirect_url 在 api 服务器配置为 https://myalcoholist.com
没有结尾 /
.
欢迎问题解决。