Facebook、Twitter分享功能实现,采用官方SDK方式【Android】

本篇文章主要记录自己采用官方SDK方式实现Facebook、Twitter的分享功能,Facebook实现起来还是很简单的,主要是Twitter的实现走了一些弯路,在此做一个简单的记录。

官方文档的链接:

Facebook

  1. https://developers.facebook.com/docs/sharing/android

Twitter

  1. 项目配置:https://dev.twitter.com/twitterkit/android/installation
  2. 发推文:https://dev.twitter.com/twitterkit/android/compose-tweets

Facebook分享

Facebook的官方文档还是很详细的,只要到开发者控制台创建应用,按照步骤一步一步就可以配置好,还是很简单的,就不赘述了。

这里简单将项目代码中的几个部分作简要总结:

  1. 添加项目依赖
compile 'com.facebook.android:facebook-android-sdk:[4,5)'  //facebook分享
  1. 将facebook_app_id(开发者控制台创建应用即可获得,应用编号就是facebook_app_id)配置到values/string.xml
 
    1964233977152758
  1. 注册清单文件

        
        //FacebookContentProvider后的数字替换成自己的facebook_app_id
        
        //浏览器分享卡片,未安装客户端时弹出
        
            
                

                
                

                //fb后的数字替换成自己的facebook_app_id
            
        
  1. activity中初始化以及添加分享事件
/**
     * facebook配置, 在oncreate()方法中调用
     */
    private void initFacebook() {
        //抽取成员变量
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback() {

            @Override
            public void onSuccess(Sharer.Result result) {
                //分享成功的回调,在这里做一些自己的逻辑处理
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {

            }
        });
    }
/**
     * 这是一个按钮的点击事件,分享到facebook
     * 若未安装facebook客户端,则会跳转到浏览器
     *
     * @param view
     */
    public void shareToFacebook(View view) {
        //这里分享一个链接,更多分享配置参考官方介绍:https://developers.facebook.com/docs/sharing/android
        if (ShareDialog.canShow(ShareLinkContent.class)) {
            ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setContentUrl(Uri.parse("https://developers.facebook.com"))
                    .build();
            shareDialog.show(linkContent);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //facebook的界面回调
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

完整代码已上传至GitHub:https://github.com/and2long/ShareDemo

Twitter分享

相对于Facebook,完成Twitter的分享功能还是花费了不少时间的,在网上搜索Twitter分享功能实现,搜出来的文章都是说用fabric,相关的配置一大堆,看着就头疼(顿时懒癌症就犯了)。
最后经过仔细查阅官方文档,发现并不需要fabric即可实现。

这里将实现步骤做简要总结:

  1. 在Twitter开发者控制台创建应用,获得API Key和API Secret
Facebook、Twitter分享功能实现,采用官方SDK方式【Android】_第1张图片
createApp.png
  1. 添加项目依赖
compile 'com.twitter.sdk.android:twitter:3.0.0'             //twitter分享
compile 'com.twitter.sdk.android:tweet-composer:3.0.0'      //twitter分享,发布推文
  1. 将API Key和API Secret配置到values/string.xml

    jFRczHoA7jym7X9DYOG6IMQab
    X3hYoUjklg5c3QpLi6MPx487nmGSGjlMm77kTAWMeRJPt9Xmlu
  1. 在application中初始化
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化Twitter
        Twitter.initialize(this);
    }
}
  1. 添加分享事件
/**
     * 分享到twitter
     * 若未安装twitter客户端,则会跳转到浏览器
     *
     * @param view
     */
    public void shareToTwitter(View view) {
        //这里分享一个链接,更多分享配置参考官方介绍:https://dev.twitter.com/twitterkit/android/compose-tweets
        try {
            TweetComposer.Builder builder = new TweetComposer.Builder(MainActivity.this)
                    .url(new URL("https://www.google.com/"));
            builder.show();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
  1. 分享结果回调,这一点有所不同,Twitter的分享回调是用广播的方式接受的。所以需要自己写一个广播处理回调事件,并注册到清单文件。
public class MyResultReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (TweetUploadService.UPLOAD_SUCCESS.equals(intent.getAction())) {
            // success Twitter分享成功的回调
            final Long tweetId = intent.getExtras().getLong(TweetUploadService.EXTRA_TWEET_ID);
        } else {
            // failure
            final Intent retryIntent = intent.getExtras().getParcelable(TweetUploadService.EXTRA_RETRY_INTENT);
        }
    }
}

        
            
                
                
            

到这里,Twitter的分享功能就完成了。

有小伙伴说分享后的回调么有走,还是再检查检查自己的代码吧,这里直接贴出官方的文档介绍以供参考:

Facebook、Twitter分享功能实现,采用官方SDK方式【Android】_第2张图片
twitter.png

完整代码已上传到GitHub:https://github.com/and2long/ShareDemo

这篇文章中的分享功能都是采用的标准分享方式,即点击分享按钮 --> 弹出分享对话框 --> 编辑分享内容 --> 确定分享

但是有时候项目中的需求不是这样的,比如:不弹出分享对话框,点击分享按钮便直接将需要分享的内容直接分享出去。

这个需求官方文档貌似没有给出详细的实现方式,由于篇幅原因,这里就不再写出了,如果有小伙伴有同样的需求,可私信我。

你可能感兴趣的:(Facebook、Twitter分享功能实现,采用官方SDK方式【Android】)