如何使用Facebook Android SDK 简单分享内容到Facebook主页?

7

我找不到很多FB + Android SDK的示例,而且这些样本不够简单(其中一些已经过时了)。我的简单目标是使用我的Android应用程序在FB上分享一些内容。当我开发iOS应用程序时,这非常简单。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate facebookLogin];


NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"pikSpeak", @"name",
                               shareURL, @"link",
                               @"pikSpeak for iPhone !", @"caption",
                               @"Record audio at the moment of the image taken using pikSpeak and feel the moment come alive", @"description",
                               @"shared an audible pic using pikSpeak cam", @"message",
                               imageURL,@"picture",
                               nil];

[[appDelegate facebook] requestWithGraphPath:@"feed" andParams:params andHttpMethod:@"POST" andDelegate:self];

这段代码处理了应用程序会话并保存了会话细节,以便于应用程序重启后继续使用。

1) 如何在Android中简单地分享一些东西。

2) 我看到Facebook(String app_id)已经被弃用。如果是这样的话,那么它的替代品是什么?

P.S.:使用Facebook 3.0 SDK


你愿意使用用户手机上的Facebook应用程序来分享这个内容吗?如果是的话,在Android上比在iOS上更容易。你要针对哪些Android版本进行开发? - Stephan Branczyk
1
Facebookзұ»зҡ„жӣҝд»Је“ҒеңЁFacebook 3.0 SDKдёӯдё»иҰҒжҳҜSessionзұ»гҖӮиҜ·еҸӮйҳ…жӯӨж•ҷзЁӢпјҡhttps://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/publish-open-graph-story/ - Tushar
@StephanBranczyk 我正在为Gingerbread(2.3.3)及以上版本构建应用程序。不同版本之间有区别吗? - rahulg
2个回答

17

选自使用Facebook SDK分享到用户的墙上

private void share() {
    Bundle bundle = new Bundle();
    bundle.putString("caption", "Harlem Shake Launcher for Android");
    bundle.putString("description", "Your android can do the Harlem Shake. Download it from google play");
    bundle.putString("link", "https://play.google.com/store/apps/details?id=mobi.shush.harlemlauncher");
    bundle.putString("name", "Harlem Shake Launcher");
    bundle.putString("picture", "http://shush.mobi/bla.png");
    new WebDialog.FeedDialogBuilder(mContext, mySession, bundle).build().show();
}
如果您需要登录(请在您需要登录/分享的任何活动中添加以下内容):
Session.openActiveSession(this, true, new Session.StatusCallback() {

    @Override
    public void call(Session session, SessionState state, Exception exception) {
        if(session.isOpened()) {
            share();
        }
    }
});

你需要添加到你的活动中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode) {
    default:
        if(Session.getActiveSession() != null) //I need to check if this null just to sleep peacefully at night
            Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        break;
    }
}

我需要检查是否为null,这样晚上才能安心睡觉。当有人报告错误时,你可以继续睡觉。而我则是在那些我不认为需要进行空值检查的地方避免了空值检查,这样当有人发生错误时,我会醒来并修复它。然后当我晚上能够睡得好时,我就知道其他人也一样。 - Ilya Gazman
完美 - 在网上经历了许多死胡同和错误的开始后(可能是由于较旧/较新的FB APK),这是唯一有效的!我不能使用现代的FB Share类,因为我想要兼容从Android 2.3开始的版本,所以我需要使用FB SDK 3.17... - user1300214

0

Feed Dialog用于在自己的墙上发布,从技术上讲,它不是分享。 另外,如果您想实现分享功能,请使用Facebook SDK for Android提供的分享对话框。Facebook分享对话框提供了各种功能,例如标记朋友、地点等,利用OpenGraphAction。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接