gpt4 book ai didi

Android:使用 Fabric、Twitter REST API 和 Retrofit 将图像添加到推文

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:40 25 4
gpt4 key购买 nike

我正在开发一款应用程序,用户可以在其中将某些内容发布到 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,我如何使用它将这个媒体对象附加到由状态服务的更新功能创建的推文?我没有在文档中找到任何附加实体的方法。

到目前为止我有这个:

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);

}

有哪位知识渊博的人可以给我更多指导吗?提前致谢!

最佳答案

最后,在最新版本的 Twitter Kit 中添加了对媒体上传和使用媒体 ID 发送推文的支持(使用 StatusesService)。

通过添加以下代码,我已经能够使用 StatusesService 使用图片发推文:

File photo = new File(mCurrentPhotoPath);
TypedFile typedFile = new TypedFile("application/octet-stream", photo);

MediaService ms = twitterclient.getMediaService();

ms.upload(typedFile, null, null, new Callback<Media>() {
@Override
public void success(Result<Media> mediaResult) {

StatusesService statusesService = TwitterCore.getInstance().getApiClient(session).getStatusesService();

statusesService.update("@##### " + eventtype + " lähellä paikkaa: " + place.getText().toString() + ";\n" + comment.getText().toString(), null, false, mypos.latitude, mypos.longitude, null, true, false, mediaResult.data.mediaIdString, new Callback<Tweet>() {
@Override
public void success(Result<Tweet> tweetResult) {
//...
}

@Override
public void failure(TwitterException e) {
//...
}

});

}

@Override
public void failure(TwitterException e) {
//...
}
});

关于Android:使用 Fabric、Twitter REST API 和 Retrofit 将图像添加到推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com