簡體   English   中英

使用password.js進行Twitter身份驗證

[英]Twitter authentication with passport.js

這是一個關於帶有Operation.js的Twitter OAuth的小眾問題()

我有一個控制器,可使用其Twitter“頭像”更新用戶的頭像:

const signInViaTwitter = (twitterProfile) => {
  return new Promise((resolve, reject) => {

    console.log(twitterProfile);

    // find if user exist on in
    User.findOne({ username: twitterProfile.username }, (error, user) => {
      if (error) { console.log(error); reject(error); }
      else {

        // user existed on db
        if (user) {
          // update the user with latest git profile info
          user.name = twitterProfile.displayName;
          user.username = twitterProfile.username;
          user.avatarUrl = twitterProfile.photos.value;
          user.email = '';

          // save the info and resolve the user doc
          user.save((error) => {
            if (error) { console.log(error); reject(error); }
            else { resolve(user); }
          });
        }

        // user doesn't exists on db
        else {
          // check if it is the first user (Adam/Eve) :-p
          // assign him/her as the admin
          User.count({}, (err, count) => {
            console.log('usercount: ' + count);

            let assignAdmin = false;
            if (count === 0) assignAdmin = true;

            // create a new user
            const newUser = new User({
              name: twitterProfile.displayName,
              username: twitterProfile.username,
              avatarUrl: twitterProfile.photos.value,
              email: '',
              role: assignAdmin ? 'admin' : 'user',
            });

            // save the user and resolve the user doc
            newUser.save((error) => {
              if (error) { console.log(error); reject(error); }
              else { resolve(newUser); }
            });

          });
        }
      }
    });
  });
};

用戶的身份驗證有效-但由於某些原因,該頭像不會顯示...以下控制台輸出:

拒絕加載圖像' https://api.twitter.com/favicon.ico ',因為它違反了以下內容安全策略指令:“ img-src https://abs.twimg.com https://*.twimg .com https://pbs.twimg.com數據:”。

有人知道這意味着什么嗎? 我在想這可能是由於處於開發模式-即http:// localhost:8080 / ...而它不會接受https? 還是不會把它傳回來?

更新 :^我認為以上錯誤與圖像未顯示無關...

稍微看一下html源代碼可以得到:

<img class="styles__userAvatar___2x2U9" src="{unknown}" alt="Wind Up Lord Vexxos Avatar">

因此,顯然是為src傳遞了一個未知變量-而不是用戶的顯示頭像...

因此,對我而言,令人討厭的行是:

user.avatarUrl = twitterProfile.photos.value;

我應該將此設置為什么?

只是一個想法,twitterProfile.photos不是數組嗎? 可能您應該嘗試訪問twitterProfile.photos [0] .value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM