我正在使用一次性Chrome钱包付款为chrome商店开发打包应用程序.对于我的应用程序,我需要在运行时检查用户是否购买了应用程序,以决定它是演示功能还是完整功能.
根据chrome identity API文档:
要使应用程序ID保持不变,您需要将已安装的manifest.json中的密钥复制到源清单.
我有2个关于此程序的问题:
1)在什么条件下我的申请的ID可能会改变?我试图重新安装应用程序并进行更新,但应用程序ID保持不变..如果没有办法更改应用程序ID,为什么我需要此程序?
2)如何将带有manifest.json(包含"key"字段)的zip存档上传到chrome仪表板?问题是上传者向我抛出错误:
发生错误:无法处理您的商品.
清单中不允许使用关键字段.
google-chrome chromium google-chrome-extension google-chrome-devtools google-chrome-app
我正在编写一个chrome扩展,我正在尝试使用chrome.identity API.但我的Chrome无法识别身份.
在开发人员工具中的以下代码中,我收到一条错误消息"无法读取未定义的属性getAuthToken:
chrome.identity.getAuthToken({ 'interactive': false }, function(token) {
Run Code Online (Sandbox Code Playgroud)
我试着在控制台中输入.chrome.extension有效,但chrome.identity未定义.
我的manifest.json在权限中有"身份".我是最新的Chrome v38.是否还需要启用身份API的其他内容?
有没有办法使用Puppeteer测试Chrome扩展程序?例如,扩展程序可以检测Chrome是否以"测试"模式启动以提供不同的UI,检查内容脚本是否正常工作等?
我刚刚在新机器上安装了RVM,当切换到包含.rvmrc文件的目录时(我接受了)我得到了:
ERROR: Neither sha256sum nor shasum found in the PATH
Run Code Online (Sandbox Code Playgroud)
我在OS X 10.5.8上. - 可能在某处丢失了某些东西.有什么想法,以及如何解决这个问题?
我正在尝试使用该chrome.identity.launchWebAuthFlow方法在我的 chrome 扩展中验证 Google 用户的登录名以获取他的电子邮件地址,我的代码是:
"key": "Key_here",
"oauth2": {
"client_id": "my_client_id.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/userinfo.email"
]
}
Run Code Online (Sandbox Code Playgroud)
function startOAuth() {
chrome.runtime.sendMessage({"message": "start_oauth"});
}
$("#login").on("click", startOAuth);
Run Code Online (Sandbox Code Playgroud)
var manifest = chrome.runtime.getManifest();
var clientId = encodeURIComponent(manifest.oauth2.client_id);
var scopes = encodeURIComponent(manifest.oauth2.scopes.join(' '));
var redirect_uri = chrome.identity.getRedirectURL();
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.message === "start_oauth") {
chrome.identity.launchWebAuthFlow({
"url": "https://accounts.google.com/o/oauth2/v2/auth?" +
$.param({
"scope": scopes,
"response_type": "token",
"client_id": clientId,
"redirect_uri": redirect_uri,
"prompt": "consent"
}),
"interactive": true
}, function (response) {
console.log('response: …Run Code Online (Sandbox Code Playgroud) javascript google-chrome google-chrome-extension oauth-2.0 google-oauth
我创建了一个使用本地消息传递到主机的扩展。
扩展的 manifest.json 是:
{
"manifest_version": 2,
"version": "1.0",
"name": "Native Messaging Example",
"description": "Send a message to a native application",
"permissions": [
"nativeMessaging"
],
"browser_action": {
"default_popup": "popup.html"
}
}
Run Code Online (Sandbox Code Playgroud)
popup.html:
<html>
<head>
<script src="./main.js"></script>
</head>
<body>
<button id="buttonToPress">Press</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
main.js 文件:
var port = null;
function connect() {
port = chrome.runtime.connectNative('com.google.chrome.example.echo');
port.onMessage.addListener(function(message) {
alert(message);
port.disconnect();
});
port.onDisconnect.addListener(function() {
port = null;
alert(chrome.runtime.lastError.message);
});
var message = {
'filePath': 'C:\\Users\\username\\Desktop\\themes\\Wallpaper\\Architecture\\img13.jpg'
};
port.postMessage(message);
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('buttonToPress').addEventListener('click', connect); …Run Code Online (Sandbox Code Playgroud) javascript json google-chrome-extension chrome-native-messaging
在发布任何内容之前,我可以有一个指向我的扩展页面(在网上商店中)的链接吗?我不想为了获得链接而重新上传。
我想与同事分享一个解压缩的扩展程序.它chrome.runtime.sendMessage(string extensionId, any message, object options, function responseCallback)在注入的脚本中使用该方法.为此,我需要提前知道扩展ID.
解包扩展程序的扩展ID在不同系统上是否会有所不同,或者我可以对我在扩展菜单中找到的扩展ID进行硬编码?
我在C#代码中使用RSACryptoServiceProvider,并且运行良好,可以导出RSA XML私钥和公钥,但是由于某种原因,我需要将此密钥转换为* .pem,格式为(PKCS8未加密)
我的私钥就像
<RSAKeyValue>
<Modulus>zYs6baSaRDgLc5fG3/ozwGwS8OAvxd9quE2su+7//Lnz2WuIbe8jMc5kL7p2gsPZUEoB88SFHdGZSYiZJhERDc/1iQ4VsW2/ra8DBW+1m3K33EDvvI3rJ0NIyuRNuwoYql3hYdY0cdW6Gru9ZARCpptgBSJEiUSPjlzDEXz3RaU=</Modulus>
<Exponent>AQAB</Exponent>
<P>89aDVrzNZuDfkCCUR6LKlxHul64zb4EBUN4vr6VZ4LrjEqT6m7+a/8lIrgSK03R1hDdOzeg79eS0OLH5cbe6xQ==</P>
<Q>18vAJpkwmhDSMjcPAE/4LufpZ6ukaOgkcPj9LngZSQlIt/D19LT/4NqZ2BrukX5bFCL6WPPLrJmmYlG/Jj+NYQ==</Q>
<DP>whMgoi7PxWyCRDLKEmJNoQQSxQNPyRYCuBzAE6sl6CqXhUVuefx9H81TXb4byMXOqxdiT5zh7IrFrsJo6cv0iQ==</DP>
<DQ>ylGZAZc2XfvPVo0QX3aadT+xMSVXq5OaNuD6XorzCerOZsZfkuHv1NyeyGHXskkJE0QH+0X3ewdDW4LQ+Ac1gQ==</DQ>
<InverseQ>v4nkldQ2UKhJUZiyJbKnp2xopzfmreDQTTtGbaF4X0UP5pDGJndmUhj1SHITUAVqwUBa+hSl8TvzcO4IRpkOFg==</InverseQ>
<D>JopbL9Dj7jO2DfwhGcE/7+4z1P+sZYVhbOJ/p5OGY1x4uUVdBQQIjN++0GY9r4JKnq/p0swAC9nPzMZ0tPsRP7gV5x7fmySlMP4tGpALDHbDgGfN098m2+JqK+/MIMYTAdLbnAcwk/1Lp8mB7Urm/OF/M0LOUzRQ1mwXVXNG/sE=</D>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)
我想将其转换为如下所示的(PKCS8未加密)
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC0Bo/mh3bSiOiP
CUxtpa0c8IhDNJqaRDNWaKiqothEjgI7D/IU/uHacPotyedjzLFNr0cnhgguO4dQ
dNaSN+tAlgBqcexBbAl31+BEghNy+1PB189VNVSf8G+qOfF0SIKuBbb/+Q4TrvOD
XPrzulQpLcHMqRGqRE4PkT6574pKyiQGJvjeLBLEQtiobKkzoG3HOFkl9RsKae1f
Tuf8f25aVhKjoUyWp1mOfhHwdfT+76rmrz7F9X1s6M7pxigIfCiYPXHrWh02GTbj
EVLKTpVBg31JmrKErNJsv/j5P3wuSI12TCW4u1RXfahBHhi263oGCQ/2JO/Fm4+v
5wtX20x5AgMBAAECggEBAJjceZPlsp9SYSYTXzI7W6MXGpz2LdCP2IemlpFNdRXA
/2PnRkdNpbk19TisGC5FwMeV7XVB+fBH274Vd5zwnnFY7UF1OobSlbeNNoD1ck5P
2e7esM5JWnH0VtzUFpIGf/AEKj9v2uQbyenhKbWKoavVjpmZdcZ9+Up+qiR3oZWe
YiScMlYm5KL+pTD1IMZQ46DoxU17VhOVxbZoZOf+a5iAPtskjJyz12EOVldHASGz
VZkM54C+BrCTdJjOB5C7cth94D7J7nhgovBP0jz6A7WZtDpgBB6j1lFBwKSWw0U4
0LGZb/Mlb29txAoeR1YSHCe6RKuyyY3oas6fJ1kdRgECgYEA12r1nkK8fjNybMbp
No+TsWD9YDTLZrndHBMIR+GtUKWCXTpw7EwT0BCU4ATm6TiTje0ZI9kZW1tnbB4W
iCIyU8o/OeIBBbqKMLtk2iN82KFrNbIbA4IER0J441evYZTnh9NbkJks8iyATPdC
hypRiOi1V4n9CFDguGHj+IsKpLUCgYEA1fC65ASTYGhQ5iQ56G48iKV5XIBldKad
MFcaxzAA/Hp6GMywHqEiYvk/WmCakDmIK1g7Rf7LURvWTYp1nytRBzTRDvrf4ESU
WF4z5Mr6EcnqKEpqDO/tDCwUp+4BReXMrf99KXRAWYig9zjq8garYEmIznoIc02i
4Q/X1uu1RzUCgYEAxzQFxj/4hsuUeLrIVsgWz+Tc6eZoYapmqdt/wNkUqIslLoko
e5suhy2OPkrKLck/yfMDWH8eT7kKvpRkSac12v4f0asJPv7tY3snHAHNJZa/yXvW
Nzw4MJ1rpPAlIpvML3JoLiM3yQsV6haM0ulzVKO9biIQd2wzIs6DPgd15DECgYEA
lQ2vaAW4GEcVdgJvRfznt9xx/XyHMwqSIYfOZFCRn1ZFktmpKu3g40v8U59SkIFE
2c4THeUzCkN2v3dkE40+WuL1dJZdPAcLw7V+Oj0glRw0Q/X0hSbz5LMhgQ5VXLmK
LP//183it351h0jkh9MVu3QAGLr1AEBq5pr/KgH2vrECgYEAr6y3cCo/gdUi6v3Y
39B6LTcmqeKZbpqh3LzBl+I6Ke9t/TOqCZhwtuolMDkFLhZ9woGDeB1VBfV7yUW4
xyF3rE6uMSEZyD5ivku7VC2Gsz/2XuRGl8iToGXgGxzzg6HMQr6Hw36+0VFzzxSo
xn9/6PuHd1bNooOv1S3s0WVkTJw=
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
我在这名安全人员中并不专业,并且不确定是否可以将其转换为否?谁能帮忙代码示例?
摘要:如何使用 C# 生成用于打包 google 扩展的 key.pem 文件?
据我所知,Google 扩展中使用的 pem 文件是使用以下代码生成的
openssl pkcs8 -topk8 -nocrypt -out key.pem
Run Code Online (Sandbox Code Playgroud)
它是pkcs8 密钥,我尝试使用 bouncycastle 从 RSA XML 文件生成它,如本文中所述,但最终生成的 .pem 文件不被 google chrome 接受,它的结构是正确的,但文件的长度几乎是一半chrome浏览器在打包过程中生成的。
谷歌浏览器所需的最终密钥如下所示
-----BEGIN PRIVATE KEY-----
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC0Bo/mh3bSiOiP
CUxtpa0c8IhDNJqaRDNWaKiqothEjgI7D/IU/uHacPotyedjzLFNr0cnhgguO4dQ
dNaSN+tAlgBqcexBbAl31+BEghNy+1PB189VNVSf8G+qOfF0SIKuBbb/+Q4TrvOD
XPrzulQpLcHMqRGqRE4PkT6574pKyiQGJvjeLBLEQtiobKkzoG3HOFkl9RsKae1f
Tuf8f25aVhKjoUyWp1mOfhHwdfT+76rmrz7F9X1s6M7pxigIfCiYPXHrWh02GTbj
EVLKTpVBg31JmrKErNJsv/j5P3wuSI12TCW4u1RXfahBHhi263oGCQ/2JO/Fm4+v
5wtX20x5AgMBAAECggEBAJjceZPlsp9SYSYTXzI7W6MXGpz2LdCP2IemlpFNdRXA
/2PnRkdNpbk19TisGC5FwMeV7XVB+fBH274Vd5zwnnFY7UF1OobSlbeNNoD1ck5P
2e7esM5JWnH0VtzUFpIGf/AEKj9v2uQbyenhKbWKoavVjpmZdcZ9+Up+qiR3oZWe
YiScMlYm5KL+pTD1IMZQ46DoxU17VhOVxbZoZOf+a5iAPtskjJyz12EOVldHASGz
VZkM54C+BrCTdJjOB5C7cth94D7J7nhgovBP0jz6A7WZtDpgBB6j1lFBwKSWw0U4
0LGZb/Mlb29txAoeR1YSHCe6RKuyyY3oas6fJ1kdRgECgYEA12r1nkK8fjNybMbp
No+TsWD9YDTLZrndHBMIR+GtUKWCXTpw7EwT0BCU4ATm6TiTje0ZI9kZW1tnbB4W
iCIyU8o/OeIBBbqKMLtk2iN82KFrNbIbA4IER0J441evYZTnh9NbkJks8iyATPdC
hypRiOi1V4n9CFDguGHj+IsKpLUCgYEA1fC65ASTYGhQ5iQ56G48iKV5XIBldKad
MFcaxzAA/Hp6GMywHqEiYvk/WmCakDmIK1g7Rf7LURvWTYp1nytRBzTRDvrf4ESU
WF4z5Mr6EcnqKEpqDO/tDCwUp+4BReXMrf99KXRAWYig9zjq8garYEmIznoIc02i
4Q/X1uu1RzUCgYEAxzQFxj/4hsuUeLrIVsgWz+Tc6eZoYapmqdt/wNkUqIslLoko
e5suhy2OPkrKLck/yfMDWH8eT7kKvpRkSac12v4f0asJPv7tY3snHAHNJZa/yXvW
Nzw4MJ1rpPAlIpvML3JoLiM3yQsV6haM0ulzVKO9biIQd2wzIs6DPgd15DECgYEA
lQ2vaAW4GEcVdgJvRfznt9xx/XyHMwqSIYfOZFCRn1ZFktmpKu3g40v8U59SkIFE
2c4THeUzCkN2v3dkE40+WuL1dJZdPAcLw7V+Oj0glRw0Q/X0hSbz5LMhgQ5VXLmK
LP//183it351h0jkh9MVu3QAGLr1AEBq5pr/KgH2vrECgYEAr6y3cCo/gdUi6v3Y
39B6LTcmqeKZbpqh3LzBl+I6Ke9t/TOqCZhwtuolMDkFLhZ9woGDeB1VBfV7yUW4
xyF3rE6uMSEZyD5ivku7VC2Gsz/2XuRGl8iToGXgGxzzg6HMQr6Hw36+0VFzzxSo
xn9/6PuHd1bNooOv1S3s0WVkTJw=
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud) 我试图在不同的机器上测试我的chrome扩展,并且我看到扩展ID每次都会更改,因为我将它作为解压扩展加载.
但是,我真的需要保持相同的扩展ID.我的扩展程序通过OAuth 2.0与外部非Google提供商进行.当我向外部提供商注册我的扩展时,我提供了重定向URI,
chrome-extension://<extension-id>/callback.html如果我再次加载解压缩的扩展名,则ID会更改,我的应用程序将不再适用,因为重定向URI会更改.不断更改重定向URI几乎是不可行的.我如何保持相同的ID?
我正在尝试实施一个屏幕共享Web应用程序,该应用程序将使用desktopCapture Chrome API在网页上显示用户屏幕.我创建了chrome扩展,并在后台运行了一个事件监听器.我的问题是当我尝试从网页发送消息到扩展名(获取userMedia id)时,我没有在扩展端收到任何内容.我也试图将getUserMedia id返回到网页以显示feed.我已经附上了我拥有的东西.谢谢
表现
{
"name": "Class Mate Manifest",
"description": "Extension that allows for user to share their screen",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions": [
"desktopCapture",
"tabs"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "index.html"
}
}
Run Code Online (Sandbox Code Playgroud)
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request.greeting);
if(request.greeting == yes){
chrome.desktopCapture.chooseDesktopMedia(["screen", "window"], sendResponse);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
webpage.js
function gotStream(stream) {
console.log("Received local stream");
var video = document.querySelector("video");
video.src = URL.createObjectURL(stream);
localstream = stream;
// stream.onended = …Run Code Online (Sandbox Code Playgroud) javascript google-chrome video-capture google-chrome-extension web