【发布时间】:2015-10-25 11:11:08
【问题描述】:
我正在开发一个应用程序,用户可以在该应用程序中将某些内容发布到 Twitter,还可以拍照添加到推文中。我是 Fabric 和 Retrofit 的新手,所以我有一些关于如何实现图像上传以及如何将上传的图像与 Statuses Service 的更新功能一起使用的问题。 (我知道 TweetComposer 允许轻松发布带有推文的图像,但我不想要额外的 Twitter UI 元素,而且我还希望能够以编程方式设置与推文关联的位置,这在 TweetComposer 中是不可能的)。
到目前为止,我的理解是,为了在使用状态服务更新方法发布的推文中包含图像,我们需要先将图像本身上传到 Twitter。我发现通过 REST API 上传图片是使用这个 URL 完成的:
https://upload.twitter.com/1.1/media/upload.json
我还发现可以自定义 Fabric 中提供的 Twitter API 客户端来访问服务端点。
class MyTwitterApiClient extends TwitterApiClient {
public MyTwitterApiClient(TwitterSession session) {
super(session);
}
/**
* Provide CustomService with defined endpoints
*/
public CustomService getCustomService() {
return getService(CustomService.class);
}
}
// example users/show service endpoint
interface CustomService {
@GET("/1.1/users/show.json")
void show(@Query("user_id") long id, Callback<User> cb);
}
但是,我很乐意得到更多解释。首先,如何在 API 客户端中更改域(到 upload.twitter.com)以及回调中我应该期望什么类型?
另外,如果图像上传成功并且我设法获得了它的 ID,我如何使用它将这个媒体对象附加到由 Statuses 服务的更新功能创建的推文?我在文档中没有找到任何附加实体的方法。
到目前为止,我有这个:
public class MyTwitterApiClient extends TwitterApiClient {
public MyTwitterApiClient(TwitterSession session)
{
super(session);
}
public UploadMediaService getUploadMediaService() {
return getService(UploadMediaService.class);
}
}
interface UploadMediaService {
@Multipart
@POST("1.1/media/upload.json")
void upload(@Part("media") TypedFile file, @Part("additional_owners") String owners, Callback cb);
}
有没有知识更丰富的人可以给我更多的指导?提前致谢!
【问题讨论】:
标签: android twitter media retrofit twitter-fabric