本文转载加上原文链接:http://blog.csdn.net/foryou96/article/details/76853141
最近全景系列慢慢的变火了,但是博主在尝试写上传全景图片到facebook的时候并搜索不到相关的资料,官方文档和谷歌都搜索不到什么上传全景图片使用的api或者其他信息(各种全景设备的软文倒是有一大堆),所以在博主查找各种资料,奋斗了两个星期后,终于找到了一套的解决办法,现在给大家分享分享。
1.使用SDK
首先在使用facebook的官方api上传之前需要去使用facebook的sdk,在build.gradle中添加“compile ‘com.facebook.android:facebook-android-sdk:4.+’”,这样可以保证sdk是最新的,如图:
2.在facebook注册应用
到https://developers.facebook.com/登录并成为开发者,然后添加新应用,如图:
3.填写应用信息
类名是进入时候第一个启动的activity,密钥散列需要特别说明下,它是根据你的应用的签名打包之后安装才能得到的一串英文和数字,获取方法一搜一大堆,我就说一个简单的方法
- 下载链接apk并安装:下载
- 打包签名并安装你需要接入Facebook的应用
- 输入你的应用的包名,得到一串英文和数字即为密钥散列
4.配置环境和登录获取权限
在撸代码之前,其实还有2个操作,分别是:
- 配置Facebook SDK使用的环境
- Facebook登录并获取到对应的权限
这个可以按照Facebook官方的文档提示来:在AndroidManifest.xml添加配置
配置好后可以选择用Facebook提供的集成的登录按钮登录(官方集成按钮文档),也可以自己写登录代码实现登录
第三方登录流程:
首先要初始化Facebook工具
然后写管理回调器和登录的代码
记得要写facebookCallback(登录的回调)
官方的回调很清晰,这里就不多说,贴图就好
最后一定不能漏的,博主漏了这个不能登录,排查了好久才发现
到这里,就可以正常的登录并获取到发布帖子的权限了
博主还遇到过一个问题:在Facebook中还有一个叫”user_photos”的权限,博主以为发布图片需要,后来在审核的时候,Facebook客服告诉我不需要此权限就可以上传图片,所以各位就只需要申请”publish_actions”权限即可。
5.正文代码
获取到发帖的权限后,就可以上传我们的全!景!图!片!了!
直接上代码:
//全景照片Bundle封装的数据
Bundle params = new Bundle();
try {
//是否是全景照片
params.putBoolean("allow_spherical_photo", true);
//初始视距水平度
params.putInt("initial_view_heading_override_degrees", 0);
//初始视距俯仰度
params.putInt("initial_view_pitch_override_degrees", 0);
//公开等级ALL_FRIENDS,CUSTOM,EVERYONE,FRIENDS_OF_FRIENDS,SELF;
params.putString("privacy", "{\"value\":\"EVERYONE\"}");
//描述
params.putString("caption", commentShare);
//文件的绝对路径
params.putByteArray("source", getResource(pathShare));
} catch (IOException e) {
e.printStackTrace();
}
//AsyncTask异步发送数据给Facebook
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/me/photos",
params,
HttpMethod.POST,
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
//返回的情况
Log.d("graphRequestAsyncTask", "返回的情况 response = " + response);
//上传图片得到的图片信息
Log.d("getRawResponse", "上传图片得到的图片信息 getRawResponse = " + response.getRawResponse());
//获取返回的错误原因
Log.d("getError", "获取返回的错误原因 getError = " + response.getError());
}
}
).executeAsync();
}
然后就等着图片上传完成,就可以到Facebook去查看刚刚上传的全景图片了。
有这个箭头指的东东就说明上传的是全景图片啦!
在最后面补上我写的一个小demo吧,这样大家看起来也就清晰很多了
上方的代码和SDK都在里面了,只需要修改一下应用的id,包名,类名就可以直接使用啦!
现在上传资源设置下载的资源分最低变成了2分了!见谅啊!
demo下载
有什么不明白的或者是不足之处大家留言就好,博主看到之后会回答和补充的。