Генерация токена
Привет всем, я работаю над приложением для Android для потоковой передачи живого видео. Я использую библиотеку Vidyo, и она хорошо работала с потоком. Но мне нужно сгенерировать токен для потока, который я не смог
try{
Process su = Runtime.getRuntime().exec("generateToken.jar --
key="+Developer_Key+" --appID="+APP_ID+" --userName=G.Salah --
expiresInSecs=75000");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
StringBuffer output = null;
BufferedReader reader=new BufferedReader(new
InputStreamReader(su.getInputStream()));
String line="";
while((line=reader.readLine())!=null){
output.append(line+"\n");
}
String response=output.toString();
AlertDialog.Builder dialog=new AlertDialog.Builder(this);
dialog.setMessage(response);
dialog.show();
outputStream.writeBytes("exit");
outputStream.flush();
}
catch (IOException e){
AlertDialog.Builder dialog=new AlertDialog.Builder(this);
dialog.setMessage(e+"");
dialog.show();
}
Я скачал файл generateToken.jar и поместил в файл libs в студии Android и попытался выполнить командную строку оболочки "generateToken.jar -
key="+Developer_Key+" --appID="+APP_ID+" --userName=G.Salah --
expiresInSecs=75000"
используя Process, но теперь он работает:/
1 ответ
Решение
Убедитесь, что вы передаете допустимые значения для параметров developerKey и ApplicationId. Также убедитесь, что userName не содержит специальных символов. Я только что попытался сгенерировать токен с моей учетной записью, и он работал хорошо. Так что.jar работает.
Токен Vidyo Io по коду приложения Java:
public class Vidyo {
private static final String Developer_Key = "??????";
private static final String APP_ID = "?????.vidyo.io ";
public static void main(String args[]) {
try{
Process su = Runtime.getRuntime().exec("C:\\Users\\Kamal\\Desktop\\Vidyo Io\\"+"generateToken.jar -- key="+Developer_Key+" --appID="+APP_ID+" --userName=Kamal -- expiresInSecs=75000");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
StringBuffer output = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(su.getInputStream()));
String line = "";
while((line = reader.readLine()) != null){
output.append(line+"\n");
}
String response = output.toString();
System.out.println(response);
outputStream.writeBytes("exit");
outputStream.flush();
}
catch (IOException e){
System.err.println(e);
}
}
}
ИЛИ Vidyo Io Token с помощью облачной функции Firebase:
const functions = require('firebase-functions');
// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions
// https://vidyo.io/blog/create-group-video-conferencing-application-using-webrtc-node-js-and-vidyo-io/
const jsSHA = require('jssha');
const btoa = require('btoa');
let applicationId = "YOUR_VIDYO_APPLICATION_ID.vidyo.io";
let developerKey = "YOUR_VIDYO_DEVELOPER_KEY";
exports.getVidyoToken = functions.https.onRequest((req, res) => {
function getRandomInt() {
return Math.floor(Math.random() * Math.floor(9999));
}
function generateToken(expiresInSeconds) {
var EPOCH_SECONDS = 62167219200;
var expires = Math.floor(Date.now() / 1000) + expiresInSeconds + EPOCH_SECONDS;
var shaObj = new jsSHA("SHA-384", "TEXT");
shaObj.setHMACKey(developerKey, "TEXT");
jid = "demoUser" + getRandomInt() + '@' + applicationId;
var body = 'provision' + '\x00' + jid + '\x00' + expires + '\x00';
shaObj.update(body);
var mac = shaObj.getHMAC("HEX");
var serialized = body + '\0' + mac;
return btoa(serialized);
}
let thirtyMinutes = 30 * 60;
//let response = JSON.stringify({token: generateToken(thirtyMinutes)});
//res.send(response);
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({token: generateToken(thirtyMinutes)}));
}, err => {
console.error(err.stack);
res.status(500).send('Unexpected error.');
});