給大家?guī)硪恍┬袠I(yè)資訊: 蘋果不是美國(guó)最賺錢公司了 現(xiàn)在蘋果公司已經(jīng)不是美國(guó)最賺錢公司了;根據(jù)《財(cái)富》雜志發(fā)布的2025年美國(guó)500強(qiáng)排行榜榜單數(shù)據(jù)
發(fā)表于 06-03 15:29
?266次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關(guān)用戶及其賬戶的重要更新。當(dāng)用戶取消元服務(wù)的授權(quán)信息、注銷華為賬號(hào)時(shí),華為賬號(hào)服務(wù)器會(huì)發(fā)送通知到元服務(wù),元服務(wù)可以根據(jù)通知消息進(jìn)行自身業(yè)務(wù)處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
1.登錄華為開發(fā)者聯(lián)盟,選擇“管理中心 > API服務(wù) > API庫”。
2.在App Services找到RISC。
3.點(diǎn)擊啟用按鈕,選擇您的項(xiàng)目,點(diǎn)擊確定。
4.點(diǎn)擊訂閱通知按鈕,在彈窗中配置回調(diào)地址及訂閱范圍。
說明
回調(diào)地址:在開啟訂閱通知后,若華為用戶信息存在變更,會(huì)通過發(fā)送消息到該地址。
訂閱范圍:訂閱的用戶信息變更事件,詳見用戶信息變更事件介紹。
四、處理通知消息
華為賬號(hào)服務(wù)器向元服務(wù)投遞消息。元服務(wù)接收到消息后需要先對(duì)消息頭中的令牌進(jìn)行驗(yàn)簽,確保消息的完整有效性后解析并獲取用戶信息變更事件詳情。具體步驟如下:
1.驗(yàn)證消息頭中的令牌簽名。
您可通過任何JWT庫(例如:jwt.io)對(duì)其進(jìn)行解析與驗(yàn)證。
無論使用哪種庫,您均需完成如下操作:
調(diào)用接口(https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration),獲取發(fā)行者標(biāo)識(shí)(issuer)與簽名密鑰證書URI(jwks_uri)。
通過依賴的JWT庫,對(duì)消息頭中的令牌進(jìn)行解析,獲取簽名的KeyId。
通過簽名的KeyId,從簽名密鑰證書URI中獲取到JWT簽名的公鑰。
校驗(yàn)JWT簽名中的aud與訂閱用戶信息變更中提供的Client ID一致。
校驗(yàn)JWT簽名中的issuer與發(fā)行者標(biāo)識(shí)(issuer)一致。
具體驗(yàn)簽邏輯,請(qǐng)參考如下示例代碼:
Maven依賴配置
<dependencies>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.3</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.21.2</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
</dependencies>
Java驗(yàn)簽代碼示例
import com.auth0.jwk.JwkProvider;
import com.auth0.jwk.UrlJwkProvider;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Header;
import io.jsonwebtoken.IncorrectClaimException;
import io.jsonwebtoken.JwsHeader;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SigningKeyResolver;
import io.jsonwebtoken.security.SignatureException;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Key;
import java.security.PublicKey;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
public class RiscDemo {
public static void main(String[] args) {
// 消息請(qǐng)求頭中Authorization: Bearer <token>中的<token>
String token = \"
<token>
\";
// Client ID
String clientId = \"
<Client ID>
\";
Jwt<?, Object> jwt = validateSecurityEventToken(token, clientId);
if (Objects.isNull(jwt)) {
// 驗(yàn)簽失敗,進(jìn)行自己邏輯處理
} else {
// 驗(yàn)簽成功,進(jìn)行自己邏輯處理
}
}
/**
* 對(duì)Authorization頭域中的token進(jìn)行驗(yàn)簽
*
* @param token 消息請(qǐng)求頭中Authorization: Bearer <token>中的<token>
* @param clientId Client ID
*
* @Return 返回為null,則表示驗(yàn)簽失敗,否則表示驗(yàn)證成功
*/
public static <H extends Header<H>, B> Jwt<H, B> validateSecurityEventToken(String token, String clientId) {
Jwt<H, B> jwt = null;
try {
/**
* 公開配置信息地址:https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration
* 公開配置信息中的issuer值
*/
String issuer = \"id.cloud.huawei.com\";
// 公開配置信息中的jwks_uri值
String jwksUri = \"https://risc.cloud.huawei.com/v1beta/public/risc/certs\";
// 獲取公鑰信息
JwkProvider huaweiCerts = new UrlJwkProvider(new URL(jwksUri), null, null);
LoadingCache<String, PublicKey> cache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.DAYS)
.build(new CacheLoader<String, PublicKey>() {
@Override
public @Nullable PublicKey load(@NonNull String key) throws Exception {
return huaweiCerts.get(key).getPublicKey();
}
});
SigningKeyResolver signingKeyResolver = new SigningKeyResolver() {
private PublicKey getPublicKey(JwsHeader<?> jwsHeader) {
try {
return cache.get(jwsHeader.getKeyId());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public Key resolveSigningKey(JwsHeader jwsHeader, Claims claims) {
return getPublicKey(jwsHeader);
}
@Override
public Key resolveSigningKey(JwsHeader jwsHeader, String s) {
return getPublicKey(jwsHeader);
}
};
// 驗(yàn)證并解析消息內(nèi)容
JwtParser parser = Jwts.parserBuilder()
.requireIssuer(issuer)
.requireAudience(clientId)
.setAllowedClockSkewSeconds(60)
.setSigningKeyResolver(signingKeyResolver)
.build();
jwt = parser.parse(token);
} catch (IncorrectClaimException e) {
// 消息的claim無效,針對(duì)異常進(jìn)行處理(如:日志記錄)
e.printStackTrace();
} catch (SignatureException e) {
// 驗(yàn)簽失敗,針對(duì)異常進(jìn)行處理(如:日志記錄)
e.printStackTrace();
} catch (MalformedURLException e) {
// 無效的jwksUri,檢查傳入的jwksUri是否與https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration返回jwks_uri一致
e.printStackTrace();
} catch (Exception e) {
// 其他異常,業(yè)務(wù)自行處理
e.printStackTrace();
}
return jwt;
}
}
2.處理消息體。
消息體格式如下
{
\"aud\": \"<
開發(fā)者Client ID
>\",
\"iss\": \"id.cloud.huawei.com\",
\"iat\": 1727619834,
\"jti\": \"6672ed7d5c5e4c3c92f343ecac40f326\",
\"events\": {
\"https://schemas.openid.net/secevent/risc/event-type/account-purged\": {
\"subject\": {
\"sub\": \"<
觸發(fā)事件用戶的UnionID
>\",
\"subject_type\": \"iss_sub\",
\"extra\": \"<
觸發(fā)事件用戶的OpenID
>\",
\"iss\": \"id.cloud.huawei.com\"
}
}
}
}
其中,各字段含義如下:
本文主要引用參考HarmonyOS官方網(wǎng)站
發(fā)表于 04-16 17:43
。Account Kit提供的SampleCode示例工程體現(xiàn)了Account Kit提供的登錄、授權(quán)頭像昵稱、快速驗(yàn)證手機(jī)號(hào)、收貨地址、發(fā)票抬頭、未成年人模式等特性,可參考該工程進(jìn)行應(yīng)用的相關(guān)內(nèi)容開發(fā)。
一
發(fā)表于 03-31 12:08
或者因?yàn)槭艿?b class='flag-5'>蘋果公司在2024年第四季度中國(guó)市場(chǎng)表現(xiàn)不佳,iPhone銷量同比下滑18.2%的不利影響,而且華爾街機(jī)構(gòu)Jefferies和Loop Capital均下調(diào)蘋果評(píng)級(jí);Jefferies
發(fā)表于 01-22 15:39
?512次閱讀
給大家?guī)韮蓚€(gè)蘋果公司的新消息: 蘋果補(bǔ)繳近110億歐元欠稅? 在愛爾蘭;蘋果公司持續(xù)八年時(shí)間的稅務(wù)訴訟畫下句號(hào),蘋果補(bǔ)繳近110億歐元欠稅 。 在2024年9月,歐洲法院裁定
發(fā)表于 01-08 16:35
?896次閱讀
據(jù)外媒報(bào)道;歐洲監(jiān)管機(jī)構(gòu)認(rèn)為Meta和谷歌的一個(gè)廣告營(yíng)銷項(xiàng)目違反了谷歌公司制定的禁止向未成年人投放個(gè)性化廣告的規(guī)則,目前已經(jīng)被歐盟委員會(huì)(European Commission)官員調(diào)查。歐洲監(jiān)管
發(fā)表于 12-11 16:10
?554次閱讀
據(jù)外媒報(bào)道,一家巴西公司Gradiente繼續(xù)爭(zhēng)奪著“iPhone”商標(biāo)的所有權(quán),在巴西市場(chǎng)和蘋果公司繼續(xù)展開法律拉鋸戰(zhàn)。 Gradiente在?2000 年在巴西市場(chǎng)推出名為“Gradiente
發(fā)表于 12-04 15:53
?555次閱讀
蘋果公司的一舉一動(dòng)都牽動(dòng)了很多從業(yè)者的心;蘋果公司從iPhone7手機(jī)開始正式取消了3.5mm耳機(jī)孔。蘋果雖然取消了3.5mm耳機(jī)孔但是還是有配套的Lightning轉(zhuǎn)3.5耳機(jī)轉(zhuǎn)接頭銷售,現(xiàn)在多國(guó)
發(fā)表于 11-20 16:51
?3782次閱讀
蘋果2024 財(cái)年第四季度業(yè)績(jī)數(shù)據(jù)已經(jīng)公布。蘋果公司的營(yíng)收實(shí)現(xiàn)6%的增長(zhǎng)達(dá)到949.3億美元,財(cái)務(wù)業(yè)績(jī)表現(xiàn)還是不錯(cuò)。在2024財(cái)年第4財(cái)季,蘋果公司實(shí)現(xiàn)營(yíng)收949.3億美元,同比增長(zhǎng)6
發(fā)表于 11-02 19:35
?849次閱讀
蘋果公司近期動(dòng)作頻頻,我們來看看蘋果公司近期想收購(gòu)的兩家公司,一個(gè)是衛(wèi)星通訊公司Globalstar(全球星);一個(gè)是軟件開發(fā)公司Pixel
發(fā)表于 11-02 17:51
?1735次閱讀
今日,蘋果公司正式發(fā)布了iOS 18.1正式版更新,為海外iPhone用戶解鎖了多項(xiàng)創(chuàng)新功能。其中,尤為引人注目的Apple Intelligence系統(tǒng)已正式登陸iPhone 15 Pro及iPhone 16全系等高端機(jī)型,這標(biāo)志著蘋果公司在人工智能領(lǐng)域取得了重要進(jìn)展。
發(fā)表于 10-29 14:39
?1275次閱讀
數(shù)據(jù)統(tǒng)計(jì)分析顯示;蘋果公司長(zhǎng)期以來一直持續(xù)堅(jiān)持回購(gòu)自家股份;近10年來蘋果公司的股票數(shù)量持續(xù)下降;自2013年以來,蘋果公司共計(jì)回購(gòu)了價(jià)值7006.1億美元的普通股,已發(fā)行股票數(shù)量較峰
發(fā)表于 09-25 11:52
?689次閱讀
蘋果公司再次引領(lǐng)科技潮流,最新曝光的專利揭示了其探索利用心跳數(shù)據(jù)解鎖iPhone等設(shè)備的創(chuàng)新構(gòu)想——Heart ID。這一技術(shù)突破,標(biāo)志著蘋果在生物識(shí)別領(lǐng)域的又一次大膽嘗試,繼Touch ID指紋解鎖與Face ID面部識(shí)別之后
發(fā)表于 08-05 11:43
?838次閱讀
蘋果公司取得了非常不錯(cuò)的經(jīng)營(yíng)成績(jī),特別是在消費(fèi)電子市場(chǎng)降溫的大背景下,日前蘋果公布截至6月29日的2024財(cái)年第三財(cái)季財(cái)報(bào)統(tǒng)計(jì)數(shù)據(jù),蘋果公司實(shí)現(xiàn)營(yíng)收857.77億美元,同比增長(zhǎng)4.9%
發(fā)表于 08-03 16:56
?2429次閱讀
我們來看看蘋果公司近期最新消息: 就在全球資本動(dòng)蕩之際,投行D.A.Davidson將蘋果公司目標(biāo)價(jià)上調(diào)至260美元;而此前給出的目標(biāo)價(jià)只有230美元;說明韋德布什投行很看好蘋果公司;特別是蘋
發(fā)表于 08-02 16:55
?836次閱讀
評(píng)論