დაამატეთ Instagram შესვლა თქვენს NodeJS აპარატში PassportJS გამოყენებით

შეიტყვეთ, თუ როგორ მუშაობს Instagram– ის API Oauth– ით და განახორციელეთ შესვლის სრული ნაკადი MongoDB– ის გამოყენებით.

დღეს, ჩვენ ვისწავლით თუ როგორ უნდა დაამატოთ Instagram შესვლა NodeJS აპლიკაციაში PassportJS გამოყენებით (NodeJs– ში ავტორიზაციის მართვის ერთ – ერთი ყველაზე პოპულარული გზა). ჩვენ გავეცნობით, როგორ მუშაობს Instagram– ის API– ები და განახორციელებს შესვლის სრულ ნაკადს მონაცემთა ბაზის გამოყენებით (MongoDB).

როგორ მუშაობს Instagram შესვლა?

Instagram იყენებს Oauth2.0 ავტორიზაციის და ავტორიზაციისთვის. Instagram– ის შესვლა შეიძლება განხორციელდეს ჩვეულებრივი აპლიკაციების და სერვერული პროგრამებისთვის. ჩვენ ორივე მეთოდს სწრაფად მივხედავთ.

სტანდარტულ Oauth2.0- ს მიხედვით, Instagram API- ს ავტორიზაციისთვის საჭიროა Access_token. ეს access_tokens სპეციფიკურია მომხმარებლისთვის და დროზე შეზღუდული. ასე რომ, როდესაც ისინი იწურება მომავალში, თქვენ უნდა მოითხოვოთ განახლებული ნიშანი.

ქვემოთ მოცემულია სამი მარტივი ნაბიჯი Instagram- ზე Access_token– ის მისაღებად:

1- მიმართეთ მომხმარებლის Instagram- ის ავტორიზაციის URL- ს.

2- მომხმარებელი შესულია სისტემაში (თუ უკვე არ არის შესული) და ანიჭებს ნებართვას Instagram– ის მონაცემებზე წვდომისათვის.

3- Instagram გადამისამართებს ზარს თქვენს მითითებულ URL- ს კოდი პარამეტრით, სადაც ამ კოდს გაცვლით სერვერის მხარესთან დაკავშირებულ Access_token- ით.

სერვერული პროგრამებისთვის, Instagram დაამატებს access_token გადამისამართების URL- ში. (ეს ნაკლებად უსაფრთხო მეთოდია და არ არის რეკომენდებული).

წინასწარი რეკვიზიტი

  • კვანძი js
  • Express JS
  • პასპორტი JS
  • დაარეგისტრირეთ აპლიკაცია Instagram- ში

დაარეგისტრირეთ აპლიკაცია Instagram- ში

წინსვლის წინ, ჩვენ უნდა დავარეგისტრიროთ კლიენტი Instagram- ში.

გადადით Instagram დეველოპერის კონსოლზე და შექმენით ახალი კლიენტის აპლიკაცია. დარეგისტრირებისთანავე მიიღებთ კლიენტს და კლიენტსSecret.

სავარაუდოდ, თქვენ გამოიყენებთ ადგილობრივ ადგილს ამის განვითარებისთვის. რეგისტრაციისას საჭიროა დაამატოთ გადამისამართების URL. მაღარო იყო

http: // localhost: 3000 / auth / instagram / callback

თქვენ შეგიძლიათ აირჩიოთ საკუთარი, უბრალოდ გახსოვდეთ, თუ იყენებთ localhost და პორტს 3000 (ნაგულისხმევი NodeJs პორტი), თქვენი URL უნდა დაიწყოს http: // localhost: 3000.

კაპიტას პრობლემა

ახალი კლიენტის აპლიკაციის რეგისტრაციისას, შესაძლოა, კაპიტალის პრობლემა შეგექმნათ. ამის გადასაჭრელად შეგიძლიათ გამოიყენოთ Diable Content Security plugin.

შესვლა Instagram– ის გამოყენებით

ჩვენ გამოვიყენებთ pasport.js- ს, PasspostJS არის გადასასვლელი ბიბლიოთეკა თქვენს აპლიკაციაში სხვადასხვა ტიპის ავთენტიფიკაციის განსახორციელებლად. ეს არის შუა პროგრამა თქვენი NodeJs პროგრამისთვის.

მოდით შევქმნათ ექსპრესი აპლიკაცია გამოყენებით.

გამოხატეთ ინსტა-ავტორი

სიმარტივისთვის, დაამატეთ შემდეგი კოდი app.js.– ში. თქვენ შეგიძლიათ refactor მას შემდეგ, რაც მიხვდებით ნაკადს.

პასპოსტ – ინსტაგრამის ინსტალაცია

npm ინსტალაცია პასპორტი-ინსტაგრამის

საჭირო ფაილების შემოტანა

var Instagram = მოითხოვს ('პასპორტი-ინსტაგრამი'); const InstagramStrategy = Instagram.Strategy;

პასპორტის ინიციალიზაცია JS

ახლა ჩვენ დავაყენებთ PassportJs. თუ თქვენი პროგრამა იყენებს სესიას (ალბათ ასეც ხდება), მაშინ პასპორტის სესიაც უნდა გამოიყენოთ. PassportJS განახორციელებს მომხმარებლის ინსტანციებს სესიაზე და დესერიალიზაციას სესიიდან. დარწმუნდით, რომ გამოიყენეთ express.session () პასპორტამდე.) რომ უზრუნველყოთ შესვლა სესიის სწორად შეკვეთაში .passport.session () ცვლის req ობიექტს და შეცვლის "მომხმარებლის" მნიშვნელობას, რომელიც ამჟამად არის სესიის ID. (კლიენტის cookie– დან) დესერიალიზებული მომხმარებლის ობიექტში. ლოგინის გამოსვლის შემთხვევაში, pasportJs უბრალოდ ხსნის მომხმარებლების ინფორმაციას deserializeUser გამოყენებით.

app.use (pasport.initialize ()); app.use (პასპორტი.სესია ());
pasport.serializeUser ((მომხმარებელი, შესრულებულია) => {გაკეთებულია (null, მომხმარებელი)}) pasport.deserializeUser ((მომხმარებელი, შესრულებულია) => {გაკეთებულია (null, მომხმარებელი)})

პასპორტის Instagram სტრატეგია

სხვადასხვა აპლიკაციას, როგორიცაა Instagram, Twitter ან Google, შეიძლება ჰქონდეს ავტორიზაციის სხვადასხვა მეთოდი. PassposJS ახდენს სხვადასხვა ავტორიზაციის მექანიზმებს მოდულებში, რომელსაც სტრატეგიებად უწოდებენ. ჩვენ ვიყენებთ Instagram სტრატეგიას ჩვენი აპლიკაციისთვის.

Instagram– ის სტრატეგიის კონფიგურაციისთვის, ჩვენ დავამატებთ კლიენტს, კლიენტსSecret, callbackURL და ასევე გავცემთ გამოხმაურების მეთოდს ავტორიზაციის შესასრულებლად.

pasport.use (ახალი InstagramStrategy ({კლიენტი: "YOUR_CLIENT_ID", კლიენტიSecret: "YOUR_CLIENT_SECRET", გამოხმაურებაURLL: "YOUR_CALL_BACK_URL"}, (წვდომა

ჩვენ ვიყენებთ მონაცემთა ბაზას (MongoDB), რომ შევინახოთ ჩვენი მომხმარებლის ინფორმაცია და access_token. თქვენ შეამოწმებთ თქვენს მონაცემთა ბაზაში, თუ მომხმარებელი უკვე არსებობს, ან არა და შექმნით ახალ ჩანაწერს ახალი მომხმარებლებისთვის.

pasport.use (ახალი InstagramStrategy ({კლიენტი: "YOUR_CLIENT_ID", კლიენტიSecret: "YOUR_CLIENT_SECRET", გამოხმაურებითURLL: "YOUR_CALL_BACK_URL"}, (წვდომა მითითებულზე, განახლებაზემოთ, პროფილში,)): "id მომხმარებელი. profile.id}, ფუნქცია (შეცდომა, მომხმარებელი) {თუ (შეცდომა) დაუბრუნდება ზარი (შეცდომა);
if (user) {დაბრუნდა შესრულებული (null, user); // შეამოწმეთ, მომხმარებელი უკვე არსებობს}
const {id, full_name, მომხმარებლის სახელი, profile_picture, ბიო, ვებსაიტზე, ითვლის: {მედია, შემდეგნაირად, შემდეგ_by}} = profile._json.data;
const new_user = ახალი მომხმარებელი ({instagram: {id, accessToken, full_name, მომხმარებლის სახელი, profile_picture, ბიო, ვებსაიტზე, ითვლის: {მედია, შემდეგნაირად, შემდეგ_ბიჭში}}});
new_user.save (ფუნქცია (შეცდომა, მომხმარებელი) {// ახალი მომხმარებლის mongo- ში შენახვა, თუ (err) {გადააგდოთ შეცდომა;} დაბრუნდა შესრულებული (null, user);}); }); }))

მარშრუტების კონფიგურაცია

ახლა ჩვენ კონფიგურაციას გავუკეთებთ რამდენიმე მარშრუტს შესასვლელად შესაქმნელად.

app.get ('/ auth / instagram', pasport.authenticate ('instagram'));
app.get ('/ auth / instagram / callback', pasport.authenticate ('instagram', {uccessRedirect: '/ profile', failRedirect: '/ login'}));

ჩვენს აპლიკაციაში მოვაქცევთ / ავტორს / ინსტაგრამს, რომ დავიწყოთ ავტორიზაციის დინება ჩვენს აპლიკაციაში. ეს დაიწყებს ჩვენს Instagram- ის ავტორიზაციას, მომხმარებლის Instagram- ზე გადამისამართებით (თუ უკვე არ არის შესული).

ქუდის ქვეშ

ვნახოთ, რა ხდება ქუდის ქვეშ? მას შემდეგ, რაც პასპორტის ავტორიზაციას დაურეკავთ, ის გადადის Instagram- ზე, მას შემდეგ რაც მომხმარებელმა დაასრულა, Instagram დაუბრუნდება ჩვენს გამოხმაურებას URL– ით კოდით, ამ კოდს გაცვლით სერვისის გვერდის Access_Token– ის გაცვლას PassportJS– ით. თუ ჩვენ არ ვიყენებთ პასპორტს, ჩვენ თვითონ უნდა გავაკეთოთ ეს. PassportJS შინაგანად ასრულებს ავტორიზაციას და ავთენტიფიკაციას ჩვენთვის.

მას შემდეგ, რაც PassportJS მიიღებს access_token- ს, ჩვენი უკუკავშირის მეთოდი, რომელიც არის ჩვენს ინსტაგრამში, საქმეში გამოცხადდება შესვლის პროცესის დასრულება.

const instaConfig = {clientID: CLIENT_ID, klientSecret: CLIENT_SECRET, გამოხმაურებაURL: CALLBACK_URL;
const instagramInit = ფუნქცია (AccessToken, განახლების ნიშანი, პროფილი, გამოხმაურება) {მომხმარებელი.findOne (inst 'instagram.id': profile.id}, ფუნქცია (შეცდომა, მომხმარებელი) {თუ (შეცდომა) დამიბრუნდება გამოძახება (შეცდომა);
if (მომხმარებელი) {უკუკავშირის დაბრუნება (null, user); // შეამოწმეთ, მომხმარებელი უკვე არსებობს}
const {id, full_name, მომხმარებლის სახელი, profile_picture, ბიო, ვებსაიტზე, ითვლის: {მედია, შემდეგნაირად, შემდეგ_by}} = profile._json.data;
const new_user = ახალი მომხმარებელი ({instagram: {id, accessToken, full_name, მომხმარებლის სახელი, profile_picture, ბიო, ვებსაიტზე, ითვლის: {მედია, შემდეგნაირად, შემდეგ_ბიჭში}}});
new_user.save (ფუნქცია (შეცდომა, მომხმარებელი) {if (err) {სახიფათოა შეცდომა; call დაბრუნების გამოხმაურება (null, user);}); }); ;
pasport.use (ახალი InstagramStrategy (instaConfig, instagramInit));

აქ ჩვენ ვამოწმებთ, გვაქვს თუ არა ჩვენს მონაცემთა ბაზაში მომხმარებელი, თუ არა, თუ მომხმარებელი არ არსებობს, ჩვენ შევქმნით მომხმარებელს და გადავცემთ პასუხს PassportJS– ს, რომელიც შემდეგ ხდება მოთხოვნის სერიულიზაციასა და დესერიალიზაციას და შინაგანად გადაუგზავნის მოთხოვნა / პროფილში.

app.get ('/ პროფილი', უზრუნველყოს ავტორიზაცია, (მოთხოვნა, პასუხი) => {const {instagram} = request.user; გამოხმაურება.render ('profile', {user: instagram});});

დაურეკავთ პროფილს, როდესაც დაურეკავს პროფილს. მოდით ვნახოთ ჩვენი დამადასტურებელი მეთოდი. ეს მეთოდი უბრალოდ ამოწმებს, რომ მოთხოვნა დამოწმებულია თუ არა.

ფუნქცია უზრუნველყოს დამოწმებული (მოთხოვნა, პასუხი, შემდეგი) {if (request.isAuthenticated ()) {დაბრუნება შემდეგ (); გამოხმაურება.redirect ('/'); }

ეს არის ჩვენი სრული ნაკადი. ჩვენ ასევე განვახორციელებთ პროფილის მეთოდს მომხმარებლის მომხმარებლის შესახებ ინფორმაციის გამოსაყენებლად და გამოსვლის მეთოდზე.

app.get ('/ პროფილი', უზრუნველყოს ავტორიზაცია, (მოთხოვნა, პასუხი) => {const {instagram} = request.user; გამოხმაურება.render ('profile', {user: instagram});});
app.get ('/ logout', ფუნქცია (req, res) {req.logout (); res.redirect ('/');});

სრული სამუშაო კოდი

სრული კოდის ნახვა შეგიძლიათ აქ.

თქვენ უნდა დაამატოთ კონფიგურაცია.json კონფიგურაცია.json და დაამატოთ თქვენი რწმუნებათა სიგელები და ასევე დაამატოთ მონგო URL. შეგიძლიათ გამოიყენოთ mLab ღრუბლის მონგო.

დასკვნა

თქვენ არ გჭირდებათ პასპორტისJS გამოყენება ამ მიზნით, მაგრამ ის კვანძის ეკოსისტემის ერთ – ერთი ყველაზე ცნობილი ბიბლიოთეკაა, კვირაში 120 – ზე მეტი ჩამოტვირთვის საშუალებით. იგი ითვალისწინებს 500 – ზე მეტ სტრატეგიას ავთენტიფიკაციისთვის, შესაბამისად, გახდება ყოვლისმომცველი გამოსავალი თქვენი ავტორიზაციის მართვისთვის.

გვიჩვენეთ, რას აშენებთ კომენტარებში და გვაცნობეთ, თუ სადმე წამოგდებული გაქვთ და მოხარული ვიქნებით, რომ დაგეხმაროთ.

დამატებითი სოუსი (Instagram პირადი API)

ოფიციალური API– ების გარდა, თქვენი განაცხადის Instagram- ის ინტეგრაციისთვის, დეველოპერებმა შექმნეს საკუთარი ბიბლიოთეკები, რომ მუშაობდნენ Instagram– ზე, ოფიციალური API– ების გამოყენების გარეშე. (ინსტაგრამის API თავიდანვე ძალიან ცუდი იყო, ამდენი დეველოპერის საშუალებით შექმნეს გამოსწორება). შეგიძლიათ ნახოთ რამდენიმე მაგალითი აქ და აქ.

შენიშვნები

Instagram– მა დაიწყო მისი API– ის მხარდაჭერის ცვეთა და API– ს მიმდინარე ვერსია სრულად გამოითვლება till 2020 წლამდე. შეგიძლიათ მიიღოთ Instagram API– ს Facebook დეველოპერული პორტალის მეშვეობით, თუმცა ისინი ამჟამად მხოლოდ ბიზნეს ანგარიშებს უჭერენ მხარს. ასევე, ახლახან Instagram- მა Instagram Graph API გამოუშვა (წვდომა Facebook დეველოპერის პორტალზე).

შექმენით ვებ ან მობილური აპი?

Crowdbotics არის პროგრამის შექმნის, დაწყებისა და მასშტაბის სწრაფი გზა.

დეველოპერი? სცადეთ Crowdbotics App Builder, რომ სწრაფად გააფართოვოთ სკაფი და განათავსოთ პროგრამები სხვადასხვა პოპულარულ ჩარჩოებში.

დაკავებული თუ არა ტექნიკური? გაწევრიანდით ასობით ბედნიერი გუნდი, რომლებიც აშენებენ პროგრამებს Crowdbotics PM– ებთან და ექსპერტ დეველოპერებთან. მასშტაბის გრაფიკის გრაფიკი და ღირებულება Crowdbotics– ით მართული პროგრამის შემუშავება უფასოდ.