[英]TypeError Cannot read property '1' of null
'use strict'
const User = use('App/Model/User') const Env = use('Env')
const SteamWebAPI = require('steam-web'); const OpenID = require('openid'); const relyingParty = new OpenID.RelyingParty( 'http://' + Env.get('WEBSOCKET_HOST') + '/auth/callback', // Verification URL (yours) 'http://' + Env.get('WEBSOCKET_HOST'), // Realm (optional, specifies realm for OpenID authentication) true, // Use stateless verification false, // Strict mode [] );
class AuthController {
* LogOut(request, response) {
yield request.auth.logout()
response.redirect('/') }
* SteamRedirect(request, response) {
relyingParty.authenticate('http://steamcommunity.com/openid', false, function(error, authUrl) {
if (error) {
response.send('Authentication failed: ' + error.message)
}
else if (!authUrl) {
response.send('Authentication failed')
}
else {
response.redirect(authUrl)
} }); }
* SteamCallback(request, response) {
let verify = yield (
new Promise(function(resolve, reject) {
relyingParty.verifyAssertion(request.request, function(error, result) {
if(!error && result.authenticated) return resolve(result.claimedIdentifier)
else return reject(error)
})
})
)
let steamID = (/^http:\/\/steamcommunity\.com\/openid\/id\/(\d+)$/).exec(verify)[1]
let steam = new SteamWebAPI({ apiKey: Env.get('STEAM_WEBAPI'), format: 'json' })
let playerInfo = yield (
new Promise(function(resolve, reject) {
steam.getPlayerSummaries({
steamids: [ steamID ],
callback: function(err, result) {
if(err) reject(err)
else resolve(result.response.players[0])
}
})
})
)
let searchUser = {
steamid: playerInfo.steamid
}
let referral = yield request.session.get('referral', '')
let newUser = {
steamid: playerInfo.steamid,
nickname: playerInfo.personaname,
avatar: playerInfo.avatarfull,
status: 0,
referral: referral,
tradelink: ''
}
let loggedUser = yield User.findOrCreate(searchUser, newUser)
yield request.auth.loginViaId(loggedUser.id)
response.redirect('/')
}
}
module.exports = AuthController
can you help me?你能帮助我吗?
laravel TypeError Cannot read property '1' of null
laravel TypeError 无法读取 null 的属性“1”
How can I solve this?我该如何解决这个问题?
TypeError Cannot read property '1' of null
TypeError 无法读取 null 的属性“1”
Is because the exec(verify)[1]
is supposed to return an array with at least two elements.是因为
exec(verify)[1]
应该返回一个至少包含两个元素的数组。 It then takes the value of the 2nd array element and assigns it to SteamID
.然后它获取第二个数组元素的值并将其分配给
SteamID
。
let steamID = (/^http://steamcommunity.com/openid/id/(\d+)$/).exec(verify)[1]
let steam = new SteamWebAPI({ apiKey: Env.get('STEAM_WEBAPI'), format: 'json' })
The function is not returning at least 2 elements, so when it tries to read the 2nd element (in array index 1
), it returns null
.该函数没有返回至少 2 个元素,因此当它尝试读取第二个元素(在数组索引
1
)时,它返回null
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.