How to use the Unsplash API? - javascript

I'm currently working on a new personal project and it seems that I can't retrieve the images that I want from my profile since I can't authenticate properly.
My code to authenticate is the following:
var dotenv = require('dotenv');
var unsplash = require('unsplash-api');
dotenv.config()
var clientId = new unsplash({ clientId: process.env.myAccessKey }); //this is required to verify your application's requests
unsplash.init(clientId);
The issue that I'm getting is the following:
var clientId = new unsplash({ clientId: process.env.myAccessKey }); //this is required to verify your application's requests
^
TypeError: unsplash is not a constructor
at Object.<anonymous> (/Users/aharo5/Desktop/javascript/unsplash_portfolio/main.js:6:16)
at Module._compile (node:internal/modules/cjs/loader:1218:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
at Module.load (node:internal/modules/cjs/loader:1081:32)
at Module._load (node:internal/modules/cjs/loader:922:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12)
at node:internal/main/run_main_module:23:47
Could some one help me out with this request?

Related

Discord.js Token Invalid

const Discord = require("discord.js")
require("dotenv").config()
const client = new Discord.Client({ intents: [] })
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}!`)
})
client.on("message", msg => {
if (msg.content === "ping") {
msg.reply("pong");
}
})
client.login(process.env.TOKEN)
if (!token || typeof token !== 'string') throw new DiscordjsError(ErrorCodes.TokenInvalid);
^
Error [TokenInvalid]: An invalid token was provided.
at Client.login (C:\Users\johnw\node_modules\discord.js\src\client\Client.js:214:52)
at Object.<anonymous> (C:\Users\johnw\WebstormProjects\DiscordBot\index.js:15:8)
at Module._compile (node:internal/modules/cjs/loader:1159:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12)
at node:internal/main/run_main_module:23:47 {
code: 'TokenInvalid'
}
Node.js v19.0.0
ENV FILE - This is an old Token
TOKEN=MTA0NTI0ODI0NjIyMzc0NTAzNA.G36OM9.q2GxfF8ZOXqIjkKcAAnOsH_XbuC_vbgLDuOLT8
I am trying to run my bot but it always tells me that my token is invalid.
I tried refreshing my token and using the new one but even this won't help.
Folder Structure
Rename process.env (the file) to .env. That should fix the problem.
First of all, you shouldnt post your actual bots token online. Also it seems you are using env file, i personally just recommend using a json file for it since its much more convinient.
that way you can just do
const { token } = require('./config.json');
it looks like the error prompts that the TOKEN var isnt a string, so if you want to use env file. Cast it to string before parsing it into the param.

Bot staying offline [duplicate]

This question already has answers here:
How do I fix CLIENT_MISSING_INTENTS error?
(5 answers)
Discord.js v12 code breaks when upgrading to v13
(1 answer)
Closed 1 year ago.
I've tried to create a bot on discord, and with multiple tutorials, I've followed all of the instructions, and it seems to work fine in the beginning. However, with all of the tutorials, I'm met with one problem. In my index.js file for my bot, when I open the VSCode terminal and type in the command node index.js (which is supposed to make my bot go online, I get the following error messages:
/Users/myname/Desktop/testbot/node_modules/discord.js/src/client/Client.js:544
throw new TypeError('CLIENT_MISSING_INTENTS');
^
TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
at Client._validateOptions (/Users/myname/Desktop/testbot/node_modules/discord.js/src/client/Client.js:544:13)
at new Client (/Users/myname/Desktop/testbot/node_modules/discord.js/src/client/Client.js:73:10)
at Object.<anonymous> (/Users/myname/Desktop/testbot/index.js:2:13)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
[Symbol(code)]: 'CLIENT_MISSING_INTENTS'
}
I have node.js 16.13.0, and discord.js installed. My bot is a member of my server, but it's always offline. What can I do to fix it?
Here's the code for index.js:
const Discord = require('discord.js');
const bot = new Discord.Client();
const token = '[not putting my token online]';
const PREFIX = '';
bot.on('ready', () => {
console.log('Online!');
});
bot.login(token);
It seems like you don't have intents added with your bot which is needed to get it running according to the discord.js starter guide
// Require the necessary discord.js classes
const { Client, Intents } = require('discord.js');
const token = 'your token here';
// Create a new client instance
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
// When the client is ready, run this code (only once)
client.once('ready', () => {
console.log('Ready!');
});
// Login to Discord with your client's token
client.login(token);

Throw err exception while running a simple server in node js?

Iam running a simple web server with basic send and receive operations to be performed.Here the main aim of this basic server file is to start the listner of the server on some port and we have to connect a client to this port and a Hello World Message is displayed.But when i run the file there is throw error occuring.The code is shown below
var db, http, onRequest ,portnum, restFunc ,returncode;
db = require('db');
db.init();
portnum =3000;
//rest function goes here
onRequest =function (req , res) {
var bodyStr ='';
//function is called for each chunck of data received
req.on('data',function(chunck) {
bodyStr += chunck.toString();
});
//function is called when all the data has been received
//request has been sent now build respons
req.on('end',function() {
var argArray ,buflen ,contenttype ,outobj ,outputStr,recid;
outputStr = "Hello World<br>\n";
outputStr +="method:" +req.method +"\n";
outputStr += "Posted data is: " + bodyStr + "\n";
res.end(outputStr);
});
}
http = require("http");
http.createServer(onRequest).listen(portnum);
console.log("Server started ,listening on port#" +portnum);
The error Log is as follows
module.js:327
throw err;
^
Error: Cannot find module 'db'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (C:\Users\basic_server.js:3:6)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
After this error i tried to install missing db package using npm but still the error remains same.
C:\Users\Sai Kiran>npm install db
db#1.0.6 node_modules\db
├── ds#1.2.0
├── redis#0.6.7
├── mysql#0.9.4 (hashish#0.0.4)
└── aws-sdk#0.9.7-pre.8 (xmlbuilder#8.2.2, xml2js#0.2.4)

Running a js file with node

Currently, you just log on to the ssh with putty.
We're trying to run a js file which then basically creates an empty log file, currently we're just getting this error:
port : '1157', ^^^^ SyntaxError: Unexpected identifier at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3
Here's the code we think is the problem:
var mysqlInfo;
mysqlInfo = {
host : https//www.random.com, port : '2332',
user : 'test#localhost', password : '32323232',
database : 'test_installation',
charset : 'utf8_general_ci'
};
we're not sure how to format it
Another problem is we get multiple connecting issues, but I think this is the main problem.
details edited out for security, but same format as our actual file
There are few things which i noticed,
first install mysql node module
then require it in you js
the code which you wrote is for exporting module. and as per your question it seems you want to connect to mysql db.
please use the code given below and run it using node connect.js command it will work for you.
var mysql = require("mysql");
var con = mysql.createConnection({
host : https//www.random.com,
port : '2332',
user : 'test#localhost',
password : '32323232',
database : 'test_installation',
charset : 'utf8_general_ci'
});
con.connect(function(err){
if(err){
console.log('Error connecting to Db');
return;
}
console.log('Connection established');
});
Thanks
Amit

OAuth2 with nodejs api and standard javascript app

I'm trying to create an sort of plugin that users can simply add to a website and it will make COR calls to my app and return JSON that will be handled by the client side javascript.
This is working how I want it to, but now I'm trying to make sure that the user logs into my app before being allowed to receive any JSON from my server side app.
From here on I'll refer to my Node.js API as Server and the straight JS plugin as Client
I found a npm plugin for node that handles OAuth2 on the Server, but I'm not sure I'm really understanding how to use it. Here's the link and I found this for taking care of it on the Client side.
Client -> App initializer:
define [
'oauth2'
], (oauth2) ->
App =
Models: {}
Collections: {}
Views: {}
initialize: () ->
$.get "/javascripts/mu-config.json", (config) =>
#api_url = config.api
#site = config.site
#credentials = config.credentials
#make_oauth_call()
make_oauth_call: ->
#xhr = new oauth2.OAuth2XMLHttpRequest
authorizeEndpoint: "#{this.api_url}/callback"
tokenEndpoint: "#{this.api_url}/oauth/access_token"
clientID: this.credentials.clientID
clientSecret: this.credentials.clientSecret
localStoragePrefix: "oauth2.#{this.site.name}"
requestAuthorization: (callback) ->
console.log 'what?'
console.log callback
#xhr.onreadystatechange = () ->
console.log "do something"
#xhr.open "GET", "#{this.api_url}/notes?site=1&user=1"
#xhr.setRequestHeader 'Content-type', 'application/x-www-form-urlencoded'
#xhr.send "site=1&user=1"
So what works here? Well the #xhr.open ... does in fact grab JSON from the Server, but that's about it. I'm not getting any errors from the Client, but the console.log 'what?' does not fire and I don't believe anything is getting authenticated.
Server -> oauth.coffee
token = null
credentials =
clientID: "sparkmasterflex"
clientSecret: "bob_the_builder"
site: 'http://marking_up.dev'
OAuth2 = require('simple-oauth2') credentials
authorization_uri = OAuth2.AuthCode.authorizeURL
redirect_uri: 'http://localhost:3000/callback'
scope: 'sites'
state: '55fce6241c8e6432e8dfee583141aa58'
res.redirect(authorization_uri)
OAuth2.AuthCode.getToken
code: "something here"
redirect_uri: "http://localhost:3000/callback"
, saveToken
saveToken = (error, result) ->
console.log('Access Token Error', error.message) if error
token = OAuth2.AccessToken.create(result)
module.exports = OAuth2
Server -> router
express = require("express")
db = require "../database"
oauth2 = require "../oauth"
router = express.Router()
# GET home page.
router.get "/", (req, res) ->
res.render 'index',
title: "Hello world"
# Initial page redirecting to Github
router.get '/auth', (req, res) ->
res.redirect authorization_uri
# Callback service parsing the authorization token and asking for the access token
# router.get '/callback', (req, res) ->
router.route('/callback')
.get (req, res) ->
code = req.query.code
console.log '/callback'
oauth2.AuthCode.getToken
code: code
redirect_uri: 'http://localhost:3000/callback'
, saveToken
saveToken = (error, result) ->
console.log('Access Token Error', error.message) if error
token = oauth2.AccessToken.create(result)
module.exports = router
Running the node server I get this error:
/Users/raymondke99/Sites/marking_up_api/oauth.js:19
res.redirect(authorization_uri);
^
ReferenceError: res is not defined
at Object.<anonymous> (/Users/raymondke99/Sites/marking_up_api/oauth.js:19:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/raymondke99/Sites/marking_up_api/routes/index.js:7:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
I'm kinda at a loss here. The documentation for both of these seem pretty thorough but I still feel like I'm missing a huge chunk of information. Can anyone help and/or lead me to help?
Thank you
EDIT
I removed res.redirect() from oauth.coffee and I get the following error:
/Users/raymondke99/Sites/marking_up_api/node_modules/simple-oauth2/lib/core.js:16
throw new Error('Callback not provided on API call');
^
Error: Callback not provided on API call
at Object.api (/Users/raymondke99/Sites/marking_up_api/node_modules/simple-oauth2/lib/core.js:16:13)
at Object.getToken (/Users/raymondke99/Sites/marking_up_api/node_modules/simple-oauth2/lib/client/auth-code.js:34:8)
at Object.<anonymous> (/Users/raymondke99/Sites/marking_up_api/oauth.js:19:17)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/raymondke99/Sites/marking_up_api/routes/index.js:7:10)
I have more than one router because I'm using expressjs and I'm not sure where I'm supposed to have the 'catch-all' redirect. Does it need to go into every router?
Why do you have "res.redirect(authorization_uri)" in the oath file? You seem to already have the GET endpoint in your router?

Categories

Resources