Nar*_*vva 2 android access-token azure-active-directory azure-ad-b2c azure-ad-msal
实现了 Azure B2C 登录。
突然应用程序收到此错误。无法找到问题出在哪里。谁能帮忙
我们使用以下源: https ://github.com/Azure-Samples/ms-identity-android-java
下面的代码用于生成 KeyHash
public static void getKeyHash(Context mAppContext){
final String packageName = mAppContext.getPackageName();
try {
final PackageInfo info = mAppContext.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
for (final Signature signature : info.signatures) {
final MessageDigest messageDigest = MessageDigest.getInstance("SHA");
messageDigest.update(signature.toByteArray());
final String signatureHash = Base64.encodeToString(messageDigest.digest(), Base64.NO_WRAP);
Log.i("Utils", "signatureHash-->"+signatureHash);
}
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
e.printStackTrace();
Log.e("Utils", "Unexpected error in verifyRedirectUriWithAppSignature()", e);
}
}
Run Code Online (Sandbox Code Playgroud)
已授予权限的范围和在 android 代码中使用的相同范围 URL
添加此权限应用程序后我忘记了offline_access权限
我重现了您的问题并成功解决。
这是因为您没有在Azure门户上获得API权限的管理员同意。
请参阅官方示例代码中的这一行。
public static List<String> getScopes() {
return Arrays.asList(
"https://fabrikamb2c.onmicrosoft.com/helloapi/demo.read");
}
Run Code Online (Sandbox Code Playgroud)
此示例将范围设置为,https://fabrikamb2c.onmicrosoft.com/helloapi/demo.read以便它可以获取此 API 的访问令牌。
首先,您应该添加代表您的 Web API 的应用程序注册,并按照快速入门:配置应用程序以公开 Web API 公开该 API。
其次,您需要auth_config_b2c.json按照快速入门:配置客户端应用程序以访问 Web API 来在客户端应用程序注册中添加 API 权限(其客户端 ID 在文件中配置) 。
现在最重要的事情是在 Azure 门户中获得管理员同意:
您可以在Azure门户中单击权限来查看它。
将代码中的范围修改为您自己的范围/权限。
public static List<String> getScopes() {
return Arrays.asList(
"https://allentest001.onmicrosoft.com/api/demo.read");
}
Run Code Online (Sandbox Code Playgroud)
配置完所有设置后,我们可以在登录后获取访问令牌。
| 归档时间: |
|
| 查看次数: |
5254 次 |
| 最近记录: |