Я хочу создать сервер аутентификации, который извлекает токены доступа авторизованных пользователей из ключей потребителей и секретов потребителей, чтобы управлять учетными записями Twitter, которым я разрешил аутентифицировать свое приложение.
Я написал следующий код на Firebase Cloud Функционирует для достижения sh моей цели, но время истекает, и я не вижу страницу аутентификации Twitter.
Что я сделал
- Подтверждено, что Consumer Key задано как переменная среды.
- Проверено, что Consumer Secret установлен как переменная среды.
- Обновлен до плана Blaze.
Есть ли какие-либо настройки или области что может быть не так?
import * as functions from 'firebase-functions';
import * as passport from "passport";
import * as twitter from "passport-twitter";
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
require('dotenv').config()
// @ts-ignore
passport.use(new twitter.Strategy({
consumerKey: process.env['twitter.ck'],
consumerSecret: process.env['twitter.cs'],
callbackURL: 'http://127.0.0.1',
proxy: true
},
function(token: any, tokenSecret: any, profile: any, cb: (arg0: null, arg1: any) => any) {
// In this example, the user's Twitter profile is supplied as the user
// record. In a production-quality application, the Twitter profile should
// be associated with a user record in the application's database, which
// allows for account linking and authentication with other identity
// providers.
console.log(`tkn ${token}`)
console.log(`tknsec ${tokenSecret}`)
console.log(`of ${JSON.stringify(profile)}`)
return cb(null, profile);
}));
export const helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
export const callback = functions.https.onRequest(((req, resp) => {
console.log(JSON.stringify(req.params));
resp.send('ok');
}))
export const login = functions.https.onRequest(((req, resp) => {
console.log(JSON.stringify(req.params));
console.log(`ck: ${ process.env['twitter.ck']}`);
console.log(`cs: ${ process.env['twitter.cs']}`);
return passport.authenticate('twitter');
}))