当前,我正在为Lightroom开发一个插件,该插件基本上必须登录用户并帮助他将图片上传到网站。不幸的是,我陷入了以下问题:
我知道通常请求需要一些时间才能执行,并认为这可能是LrHttp已经运行而其余代码也仍在运行的问题。因此,我寻找了使LrHttp同步运行但不幸的是没有成功的方法。
在下面,您可以看到似乎无效的代码部分-函数Picsize.login(电子邮件,密码)。
if doingLogin then return end
doingLogin = true
LrFunctionContext.postAsyncTaskWithContext( 'PICSIZE login',
function( context )
if not propertyTable.LR_editingExistingPublishConnection then
notLoggedIn( propertyTable )
end
propertyTable.accountStatus = LOC "$$$/Picsize/AccountStatus/LoggingIn=Entrando..."
propertyTable.loginButtonEnabled = false
LrDialogs.attachErrorDialogToFunctionContext( context )
context:addCleanupHandler( function()
doingLogin = false
if not storedCredentialsAreValid( propertyTable ) then
notLoggedIn( propertyTable )
end
end )
local email, password = PicsizeAPI.getCredentials()
if authRequestDialogResult == 'cancel' then
return
end
propertyTable.accountStatus = LOC "$$$/Picsize/AccountStatus/WaitingForPicsize=Aguardando uma resposta da plataforma PICSIZE..."
-- this piece seems not to work
local token = PicsizeAPI.login(email, password)
if not token then
return
end
local userData = PicsizeAPI.getUserData(token)
if not userData then
return
end
propertyTable.display_name = userData.display_name
propertyTable.display_email = userData.display_email
propertyTable.token = token
PicsizeUser.updateUserStatusTextBindings( propertyTable )
end )
在Picsize.login函数(电子邮件,密码)中,我们具有:
local request = getFormatedRequest(
'/auth/login',
{ email = email, password = password },
{{ field = 'Content-Type', value = 'application/json' }}
)
local response, headers = LrHttp.post(request.url, request.body, request.headers)
if response then
return response.token
else
return nil
end
如果有人帮助我或提供一些克服它的技巧,我将非常感激:)谢谢!