
Q1:什么是钥匙环服务?
A:钥匙环服务是HMS Core对国内外开发者开放的技术服务,提供用户认证凭据本地存储,和跨应用、跨形态共享能力,帮助用户在安卓应用、快应用、Web应用之间构建无缝登录体验。(“用户认证凭据”以下简称“凭据”)
用户在已登录应用A的状态下,打开同一开发者旗下的应用B,无需输入帐号密码,实现直接登录应用B.
以电商应用为例,用户在安卓应用登录之后,收到促销短信,用华为浏览器点开短信链接,Web应用直接处于登录状态,挑选心仪商品直接付款,完成下单。
Q2:钥匙环服务可以帮助我的用户在任意两款App之间共享用户认证凭据吗?
A:钥匙环服务能够帮助用户在同一公司旗下开发的App之间共享凭据
Q3:凭据在应用之间的授权关系是可以继承,还是只能点对点授权?
A:没有继承关系,只能点对点的授权,例如,A授权给B、C、D、E,B不能转授权给F、G。
Q4:如果我的用户需要退出帐号,可以在钥匙环服务中删除凭据吗?
A:可以,钥匙环服务向开发者提供删除和更新的API。
Q5:如果我的用户拥有多个帐号,这种情况钥匙环服务如何识别用哪个帐号登录?
A:钥匙环服务可以存储多个凭据,建议产品提供确认界面,让用户自主选择登录帐号。
Q1:钥匙环服务是如何将凭据从安卓应用共享到快应用的?
A:当用户登录到您的应用之后,凭据将被保存在钥匙环服务中,已登录的应用将这些凭据授权共享给其它受信任的快应用或web应用。
Q2:钥匙环服务是怎么实现支持这么多应用形态的?
A:对于不同的应用形态,钥匙环服务提供对应的接口:钥匙环服务为安卓应用提供Android API,为快应用提供快应用API,为Web应用提供Web API。
Q3:把我的用户凭据存储在钥匙环服务中,安全吗?
A:凭据在可信执行环境(TEE)中随机生成的密钥进行加密,每个设备的密钥均不相同,而且密钥只能在TEE内使用,无法离开设备,华为也不掌握密钥的内容,支持凭据在本地安全存储。
Q4:应用保存凭据之后,用户下次直接处于登录状态时,会有提示吗?
A: 钥匙环服务SDK提供无界面的凭据读取接口,安卓应用可以直接读取到凭据内容,您可以自行决定是否提示用户:以某应用的帐号登录。
Q5:钥匙环服务如何验证请求读取凭据的应用身份信息,怎么确定不是仿冒应用呢?
A:钥匙环服务能够通过验证安卓应用的APK包名、快应用的包名和证书HASH,或者获取当前网页的真实URL作为身份信息等方式,认证读写凭据的APK或网站的真实身份,防止凭据被仿冒的程序或网站盗用,从而加强共享凭据过程中的安全性。

Q1:钥匙环服务符合用户隐私政策吗?
A:符合,关于 HMS Core 与隐私的声明中已对钥匙环服务自身的隐私声明约束做出说明。
Q2:我的App是否需要告知用户帮助TA保管凭证?
A:使用钥匙环服务过程中,用户凭据始终保存在用户设备本地,不上传服务器,用户仍是实际数据控制者,华为不能主动对用户凭据做修改、删除等影响凭据安全的操作,其次HMS Core隐私声明已做过说明,故您的App不需要再告知用户。
Q3:非华为设备上使用钥匙环服务,我的App是否需要获取用户同意?
A:当用户在非华为设备上使用钥匙环服务时,会关联启动HMS Core应用,对此您需要向用户明示并获取其同意;用户在华为设备上使用钥匙环服务则无需单独获取同意。
扫码获取接入指南
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为