我在使用FirebaseApp (第 3 方 API)生成身份验证令牌时遇到困难,该令牌可以传递到侧边栏并由客户端用来登录和访问我的 Firebase 数据库客户端。
我正在尝试使用本教程,但如果不使用makeToken(). 我更愿意使用本教程中反映的服务帐户。当我查看生成的标记之间的差异时,前两部分由“.”分隔。是相同的,最后一个“.”之后的最后一个部分 是不同的。长度也相同。例如:
//Example Generated by Database Secret: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBv.ZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=.dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2U=
//Example Generated by Service Account: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBv.ZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=.IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbml=
Run Code Online (Sandbox Code Playgroud)
我可以生成 OAuth 访问令牌,将其传递给 FirebaseApp 并生成身份验证令牌,但是当它传递到客户端并且我尝试进行身份验证时,出现错误:Login Failed! Error: INVALID_TOKEN: Failed to validate MAC.
关于如何做到这一点,似乎存在很多错误信息和相互矛盾的信息。
我有一个getFirebaseService()函数服务器端,它使用 Apps 脚本 OAuth2 库来获取访问令牌。
function getFirebaseService() {
return OAuth2.createService('Firebase')
// Set the endpoint URL.
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
// Set the private key and issuer.
.setPrivateKey(fb_PRIVATE_KEY) //Service account private key
.setIssuer(fb_SERVICE_EMAIL) //Service account email
// Set the property …Run Code Online (Sandbox Code Playgroud) 在与上述类似的文档中,我可以使用以下代码获取所有段落:
var paras = body.getParagraphs();
请注意,上面的代码不仅返回顶级段落,还返回ListItems、Tables 等内部的所有子级段落。
如何在选定范围内做同样的事情?以下代码仅返回顶级元素。
const selection = DocumentApp.getActiveDocument().getSelection();
var rangeElements = selection.getRangeElements();
Run Code Online (Sandbox Code Playgroud)
例如,上表包含 9 个非空段落,如果它们在选择中,我想一一处理它们。
我想要实现的目标类似于通过尽可能多地保留格式、表格、列表项等来翻译选择中的文本。