你好我不太熟悉react-native,我開始開發Facebook登錄使用護照和表達js在反應原生。反應本地Facebook登錄給出的錯誤不能得到auth/facebook
我實施了該代碼,但是當我在登錄點擊與Facebook它會打開瀏覽器,並給出了錯誤
不能得到認證/ Facebook的
我的網址是http://localhost:8081/auth/facebook作爲有效的OAuth重定向URL
我不知道如何把有效的URL在有效的OAuth重定向URL在Facebook的開發者控制檯也
我已經創建的後端文件夾在我的項目,創造了config.js server.js文件
個我server.js是如下
import express from 'express';
import passport from 'passport';
import FacebookStrategy from 'passport-facebook';
import GoogleStrategy from 'passport-google-oauth20';
// Import Facebook and Google OAuth apps configs
import { facebook, google } from './config';
// Transform Facebook profile because Facebook and Google profile objects look different
// and we want to transform them into user objects that have the same set of attributes
const transformFacebookProfile = (profile) => ({
name: profile.name,
avatar: profile.picture.data.url,
});
// Transform Google profile into user object
const transformGoogleProfile = (profile) => ({
name: profile.displayName,
avatar: profile.image.url,
});
// Register Facebook Passport strategy
passport.use(new FacebookStrategy(facebook,
// Gets called when user authorizes access to their profile
async (accessToken, refreshToken, profile, done)
// Return done callback and pass transformed user object
=> done(null, transformFacebookProfile(profile._json))
));
// Register Google Passport strategy
passport.use(new GoogleStrategy(google,
async (accessToken, refreshToken, profile, done)
=> done(null, transformGoogleProfile(profile._json))
));
// Serialize user into the sessions
passport.serializeUser((user, done) => done(null, user));
// Deserialize user from the sessions
passport.deserializeUser((user, done) => done(null, user));
// Initialize http server
const app = express();
// Initialize Passport
app.use(passport.initialize());
app.use(passport.session());
// Set up Facebook auth routes
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/auth/facebook' }),
// Redirect user back to the mobile app using Linking with a custom protocol OAuthLogin
(req, res) => res.redirect('OAuthLogin://login?user=' + JSON.stringify(req.user)));
// Set up Google auth routes
app.get('/auth/google', passport.authenticate('google', { scope: ['profile'] }));
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/auth/google' }),
(req, res) => res.redirect('OAuthLogin://login?user=' + JSON.stringify(req.user)));
// Launch the server on the port 3000
const server = app.listen(8081,() => {
const { address, port } = server.address();
console.log(`Listening at http://${address}:${port}`);
});
和我的配置的.js是作爲follws
export const facebook = {
clientID: 'MY CLIENT ID',
clientSecret: 'MY CLIENT SECRET',
callbackURL: 'http://localhost:8081/auth/facebook/callback',
profileFields: ['id', 'name', 'displayName', 'picture', 'email'],
};
出口const的谷歌= { clientID的: 'MY CLIENT ID', clientSecret: 'MY CLIENT SECRET', callbackURL:'http://localhost:8081/auth/google/callback', };
,我的包以.json如下
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node node_modules/nodemon/bin/nodemon.js -- node_modules/babel-cli/bin/babel-node.js server.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel": "^6.23.0",
"babel-cli": "^6.24.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"nodemon": "^1.11.0"
},
"dependencies": {
"cookie-session": "^2.0.0-beta.2",
"express": "^4.15.3",
"passport": "^0.3.2",
"passport-facebook": "^2.1.1",
"passport-google-oauth20": "^1.0.0"
}
}
我需要知道,如何把有效的本地主機地址在開發者控制檯和應用程序也。
,以及如何解決無法獲得認證/ Facebook的錯誤