Initial commit
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
es6: true,
|
||||
node: true,
|
||||
},
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"google",
|
||||
],
|
||||
rules: {
|
||||
quotes: ["error", "double"],
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
node_modules/
|
||||
@@ -0,0 +1,37 @@
|
||||
const {
|
||||
RtcTokenBuilder,
|
||||
RtmTokenBuilder,
|
||||
RtcRole,
|
||||
RtmRole,
|
||||
} = require('agora-access-token');
|
||||
|
||||
function getAgoraToken(channelName) {
|
||||
// Rtc Examples
|
||||
const appID = 'c8dfd65deb5c4741bd564085627139d0';
|
||||
const appCertificate = 'aa57b809934b4efcb407cf30089d9f25';
|
||||
const uid = 0; // no need to use this as we have authenticated this user
|
||||
const role = RtcRole.PUBLISHER;
|
||||
|
||||
const expirationTimeInSeconds = 3600;
|
||||
|
||||
const currentTimestamp = Math.floor(Date.now() / 1000);
|
||||
|
||||
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
|
||||
|
||||
// IMPORTANT! Build token with either the uid or with the user account. Comment out the option you do not want to use below.
|
||||
|
||||
// Build token with uid
|
||||
const tokenA = RtcTokenBuilder.buildTokenWithUid(
|
||||
appID,
|
||||
appCertificate,
|
||||
channelName,
|
||||
uid,
|
||||
role,
|
||||
privilegeExpiredTs
|
||||
);
|
||||
console.log('Token With Integer Number Uid: ' + tokenA);
|
||||
|
||||
return tokenA;
|
||||
}
|
||||
|
||||
module.exports = { getAgoraToken };
|
||||
@@ -0,0 +1,23 @@
|
||||
const functions = require('firebase-functions');
|
||||
const admin = require('firebase-admin');
|
||||
|
||||
var express = require('express');
|
||||
const app = express();
|
||||
|
||||
admin.initializeApp();
|
||||
|
||||
app.get('/', (req, res) => res.send('Hello World!'));
|
||||
|
||||
exports.helloworld = functions.https.onRequest(app);
|
||||
|
||||
const agora = require('./agora');
|
||||
exports.agoraToken = functions.https.onCall((data, context) => {
|
||||
console.log(data);
|
||||
|
||||
console.log("user's id: " + context.auth.uid);
|
||||
const channelName = data.channelName;
|
||||
|
||||
let token = agora.getAgoraToken(channelName);
|
||||
|
||||
return { token };
|
||||
});
|
||||
Generated
+2670
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "functions",
|
||||
"description": "Cloud Functions for Firebase",
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"serve": "firebase emulators:start --only functions",
|
||||
"shell": "firebase functions:shell",
|
||||
"start": "npm run shell",
|
||||
"deploy": "firebase deploy --only functions",
|
||||
"logs": "firebase functions:log"
|
||||
},
|
||||
"engines": {
|
||||
"node": "16"
|
||||
},
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"agora-access-token": "^2.0.4",
|
||||
"express": "^4.17.2",
|
||||
"firebase-admin": "^9.8.0",
|
||||
"firebase-functions": "^3.14.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.6.0",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"firebase-functions-test": "^0.2.0"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
Reference in New Issue
Block a user