我正在将GraphServiceClient与.Net Core 2配合使用。我正在尝试使用以下代码向我的用户添加AdditionalData
var updated = new User()
{
AdditionalData = new Dictionary<string, object>
{
{"OtherEmail", otherEmail},
{"OtherRole", otherRole}
},
};
await _graphClient.Users[user.Id].Request().UpdateAsync(updated);
执行此操作时,出现以下错误
Microsoft.Graph.ServiceException:代码:Request_BadRequest消息: 指定的一个或多个属性值无效。
有人知道我在做什么错吗?
如果有人可以告诉我如何将自己的一些元数据保存给用户,将不胜感激。我也尝试过使用扩展程序,但是遇到了这个问题。
答案 0 :(得分:0)
所以我使用OpenExtensions解决了这个问题,这也给我带来了很多问题,可以在这里看到。
Azure AD GraphServiceClient Extensions not working
技巧是添加这样的扩展名
import SpriteKit
import GameplayKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
physicsWorld.gravity = CGVector(dx:0, dy:0)
let ball = SKSpriteNode.init(color: .red, size: CGSize(width: 50, height: 50))
ball.physicsBody = SKPhysicsBody.init(circleOfRadius: ball.size.width/2)
ball.position = CGPoint(x: 0, y: 0)
buildWall()
addChild(ball)
ball.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 50))
}
func buildWall() {
let xStart : CGFloat = ((scene?.size.width)!/2) * -0.9
var brickPosition = CGPoint(x: xStart, y: 500)
let brickSize = CGSize(width: 20, height:20)
for wallRow in 1...10 {
for wallColumn in 1...30 {
let brick = SKSpriteNode(color: .yellow, size: brickSize)
brick.physicsBody = SKPhysicsBody.init(rectangleOf: brick.size)
brick.position = brickPosition
addChild(brick)
brickPosition.x += brickSize.width + 1
}
brickPosition.x = xStart
brickPosition.y -= 11
}
}
}
然后像这样检索它们。
extension = new OpenTypeExtension
{
ExtensionName = AzureADExtensions.UserConstants.ExtensionName,
AdditionalData = new Dictionary<string, object>
{
{"OtherEmail", externalUser.Email},
{"OtherRole" , externalUser.Roles.FirstOrDefault()}
}
};
await _graphClient.Users[user.Id].Extensions.Request()
.AddAsync(extension);
希望对某人有帮助!
答案 1 :(得分:0)
要将属性添加到AdditionalData
字段中,必须在 Azure AD B2C>用户属性(在Azure门户中)中定义属性。例如,如果您创建一个 Boolean 属性Dummy
,则将创建字段extension_{b2c-extensions-app-id}_Dummy
,其中{b2c-extensions-app-id}
是该对象的 Application ID 。导航到 Azure AD B2C>应用程序注册(预览)> b2c-extensions-app ,并从ID中删除破折号(b2c-extensions-app
),可以自动生成-
。>
这将允许您执行以下操作:
var updated = new User()
{
AdditionalData = new Dictionary<string, object>
{
{"extension_0000000000000000000000000000_Dummy", false}
},
};
await _graphClient.Users[user.Id].Request().UpdateAsync(updated);