Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift GetStream添加活动由于403而失败_Swift_Getstream Io - Fatal编程技术网

Swift GetStream添加活动由于403而失败

Swift GetStream添加活动由于403而失败,swift,getstream-io,Swift,Getstream Io,正在尝试使用Swift的GetStream,我无法添加活动 class MyActivity : Activity {} ... let client = Client(apiKey: <MyApiKey>, appId: <MyApiKey>, token: <Token>) let ericFeed = client.flatFeed(feedSlug: "user", userId: "eric") let activity = MyActivity

正在尝试使用Swift的GetStream,我无法添加活动

class MyActivity : Activity {}

...

let client = Client(apiKey: <MyApiKey>, appId: <MyApiKey>, token: <Token>)
let ericFeed = client.flatFeed(feedSlug: "user", userId: "eric")
let activity = MyActivity(actor: "eric", verb: "waves", object: "picture:10", foreignId: "picture:10")
ericFeed.add(activity) { result in
        print("!result!")
        print(result)
    }
我在仪表板上接收到以下日志:



有几件事需要记住。 首先,当请求结束时,您的客户机可能被解除分配,这就是为什么没有调用回调,但是日志可以显示请求已完成。我建议您使用一个共享的客户端实例,这样会很容易使用。要设置共享客户端,您需要编写以下内容:

Client.config = .init(apiKey: "<MyApiKey>", appId: "<MyApiKey>", token: "<Token>")
更多信息请访问

我建议您仅使用
feedSlug
参数创建提要,并且流
userId
将取自令牌。但是它是可选的,因为
currentUserId
是可选的。例如:

let ericFeed = Client.shared.flatFeed(feedSlug: "user")
ericFeed?.add(activity)
对于您的活动,流客户端应该始终使用当前流用户作为参与者。因此,我们需要更新您的
MyActivity
的定义

最后,以下是您的代码:

// Define your activity.
class MyActivity: EnrichedActivity<GetStream.User, String, DefaultReaction> {
// ...
}

// Setup Stream Client.
Client.config = .init(apiKey: <MyApiKey>, appId: <MyApiKey>, token: <Token>)

// Setup the current user.
Client.shared.getCurrentUser {
    let ericFeed = Client.shared.flatFeed(feedSlug: "user")
    let activity = MyActivity(actor: Client.shared.currentUser!, verb: "waves", object: "picture:10", foreignId: "picture:10")
    ericFeed?.add(activity) { result in
        print("!result!")
        print(result)
    }
}
//定义您的活动。
类MyActivity:EnrichedActivity{
// ...
}
//安装流客户端。
Client.config=.init(apiKey:,appId:,token:)
//设置当前用户。
Client.shared.getCurrentUser{
让ericFeed=Client.shared.flatFeed(feedSlug:“用户”)
让activity=MyActivity(actor:Client.shared.currentUser!,动词:“waves”,对象:“picture:10”,异化为:“picture:10”)
ericFeed?添加(活动){结果为
打印(“!结果!”)
打印(结果)
}
}

您能分享生成代币的代码吗?FTR代币由三部分组成,三部分之间用点分隔(a.b.c)。如果您编辑了最后一部分(例如a.b.[编辑]),则可以安全地共享实际令牌。你能做到吗?@TommasoBarbugli当然,完成:)
Client.shared.getCurrentUser
的回调现在返回“失败:找不到用户”。变量ericFeed不是nil,并且addActivity的回调仍然没有被调用。如果用户不存在,
getCurrentUser
是否应该创建该用户?是的,
getCurrentUser
应该为您创建或更新(如果存在)该用户。您是否尝试使用共享客户端?是的,我现在使用
Client.config=.init(apiKey:,appId:,token:)
@SimoneChelo请检查我的答案更新。您需要修改
MyActivity
的定义。我们将更新我们的文档。@SimoneChelo我的错。请在如何创建当前用户的答案中检查我的更新。如果您将使用自己的用户类型,那么需要将
GetStream.User
更改为您的类型。
let ericFeed = Client.shared.flatFeed(feedSlug: "user")
ericFeed?.add(activity)
// Define your activity.
class MyActivity: EnrichedActivity<GetStream.User, String, DefaultReaction> {
// ...
}

// Setup Stream Client.
Client.config = .init(apiKey: <MyApiKey>, appId: <MyApiKey>, token: <Token>)

// Setup the current user.
Client.shared.getCurrentUser {
    let ericFeed = Client.shared.flatFeed(feedSlug: "user")
    let activity = MyActivity(actor: Client.shared.currentUser!, verb: "waves", object: "picture:10", foreignId: "picture:10")
    ericFeed?.add(activity) { result in
        print("!result!")
        print(result)
    }
}