Android Studio Facebook 第三方登录并上传360全景图片

来源:互联网 发布:中国大学生数据 编辑:程序博客网 时间:2024/05/17 05:54

本文转载加上原文链接: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工具
    Facebook初始化

  • 然后写管理回调器和登录的代码
    管理回调器和登录

  • 记得要写facebookCallback(登录的回调)
    官方的回调很清晰,这里就不多说,贴图就好
    登录的回调

  • 最后一定不能漏的,博主漏了这个不能登录,排查了好久才发现
    onActivityResult

到这里,就可以正常的登录并获取到发布帖子的权限了

博主还遇到过一个问题:在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下载

有什么不明白的或者是不足之处大家留言就好,博主看到之后会回答和补充的。

原创粉丝点击