使用FB API如何可以张贴在Facebook上的链接从Android应用程序? [英] How can I post link on facebook from android app using FB API?

查看:188
本文介绍了使用FB API如何可以张贴在Facebook上的链接从Android应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看所有的互联网,但没有找到我怎么张贴链接在Facebook墙上的特定图片使用FB SDK \ API。

我知道,这是在code的一部分,我需要使用:

  Facebook的facebookClient =新的Facebook(fb_App_id);

捆绑参数=新包();
parameters.putString(信息,测试照片);
parameters.putString(链接,https://www.google.com);
parameters.putString(图片,链接到一些礼品编号);
facebookClient.dialog(MainActivity.thisstream.publish,参数,新DialogListener(){

@覆盖
公共无效onFacebookError(FacebookError E){
    // TODO自动生成方法存根

}

@覆盖
公共无效onerror的(DialogError E){
    // TODO自动生成方法存根

}

@覆盖
公共无效的onComplete(束值){
    // TODO自动生成方法存根

}

@覆盖
公共无效OnCancel的(){
    // TODO自动生成方法存根

}
});
 

当我尝试使用此code我得到源未找到的错误。 我觉得我缺少的连接\验证步骤...

我怎样才能使它工作?

另一件事:如果我以我个人的应用程序中使用FB SDK,我分享谷歌播放,这应用程序是免费的,但有广告就可以了,是不是合法使用FB SDK在我的应用程序

解决方案

最后,我发现如何做到这一点。

您需要声明此二:

  Facebook的facebookClient;
共享preferences米preFS;
 

在OnCreate函数初始化我用facebookClient facebook的的AppID。

的午餐在Facebook共享类必须是活动

有我加入到活动三个功能:

  @覆盖
保护无效onActivityResult(INT申请code,INT结果code,意图数据){
    super.onActivityResult(要求code,因此code,数据);
    facebookClient.authorizeCallback(要求code,因此code,数据);
}

公共无效loginToFacebook(){
    米preFS = GET preferences(MODE_PRIVATE);
    字符串access_token = M prefs.getString(access_token,NULL);
    长过期= M prefs.getLong(access_expires,0);

    若(access_token!= NULL){
        facebookClient.setAccessToken(access_token);
    }

    如果(到期!= 0){
        facebookClient.setAccessExpires(到期);
    }

    如果(!facebookClient.isSessionValid()){
        facebookClient.authorize(这一点,新的String [] {publish_stream},新DialogListener(){

            @覆盖
            公共无效OnCancel的(){
                //函数处理取消事件
            }

            @覆盖
            公共无效的onComplete(束值){
                //函数来处理完成事件
                //编辑preferences和更新Facebook的acess_token
                共享preferences.Editor编辑= M prefs.edit();
                editor.putString(access_token,facebookClient.getAccessToken());
                editor.putLong(access_expires,facebookClient.getAccessExpires());
                editor.commit();

                postToWall();
            }

            @覆盖
            公共无效onerror的(DialogError错误){
                //函数来处理错误

            }

            @覆盖
            公共无效onFacebookError(FacebookError fberror){
                //函数来处理Facebook的错误

            }

        });
    }
}

私人无效postToWall(){
    捆绑参数=新包();
    parameters.putString(名,电池监控器);
    parameters.putString(链接,https://play.google.com/store/apps/details?id=com.ck.batterymonitor);
    parameters.putString(图片,链接的图片);
    parameters.putString(显示,网页);
    // parameters.putString(APP_ID,228476323938322);

    facebookClient.dialog(MainActivity.this,饲料,参数,新DialogListener(){

        @覆盖
        公共无效onFacebookError(FacebookError E){
            // TODO自动生成方法存根

        }

        @覆盖
        公共无效onerror的(DialogError E){
            // TODO自动生成方法存根

        }

        @覆盖
        公共无效的onComplete(束值){
            // TODO自动生成方法存根
        }

        @覆盖
        公共无效OnCancel的(){
            // TODO自动生成方法存根
        }
    });
}
 

和最后:

 的ImageButton facebookButton =(的ImageButton)findViewById(R.id.button_FacebookShare);
        facebookButton.setOnClickListener(新OnClickListener(){

            @覆盖
            公共无效的onClick(视图v){

                loginToFacebook();

                如果(facebookClient.isSessionValid()){
                    postToWall();
                }
            }
        });
 

它做一个自动登录到Facebook和再displaies Facebook共享\发布对话框。 在code从这个教程

I look all the internet and couldn't find how do I post link with a specific picture on facebook wall using fb sdk\api.

I know that this is part of the code that I need to use:

Facebook facebookClient = new Facebook("fb_App_id");

Bundle parameters = new Bundle();
parameters.putString("message", "Test Photo");
parameters.putString("link", "https://www.google.com");
parameters.putString("picture", "link to some pictrue");
facebookClient.dialog(MainActivity.this, "stream.publish", parameters, new DialogListener() {

@Override
public void onFacebookError(FacebookError e) {
    // TODO Auto-generated method stub

}

@Override
public void onError(DialogError e) {
    // TODO Auto-generated method stub

}

@Override
public void onComplete(Bundle values) {
    // TODO Auto-generated method stub

}

@Override
public void onCancel() {
    // TODO Auto-generated method stub

}
});

When I try to use this code I get "Source not found" error. I think that I'm missing the connect\verification step...

How can I make it work?

Another thing: In case I use FB SDK in my personal app that I share on Google Play and this app is FREE but has Ads on it, Is it legal to use FB SDK in my app?

解决方案

Finally I found how to do it.

You need to declare this two:

Facebook facebookClient;    
SharedPreferences mPrefs;

In the onCreate function I initialize facebookClient with the facebook AppID.

The class that lunches the facebook share must be Activity

There are three functions that I added to the activity:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebookClient.authorizeCallback(requestCode, resultCode, data);
}

public void loginToFacebook() {
    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebookClient.setAccessToken(access_token);
    }

    if (expires != 0) {
        facebookClient.setAccessExpires(expires);
    }

    if (!facebookClient.isSessionValid()) {
        facebookClient.authorize(this, new String[] { "publish_stream" }, new DialogListener() {

            @Override
            public void onCancel() {
                // Function to handle cancel event
            }

            @Override
            public void onComplete(Bundle values) {
                // Function to handle complete event
                // Edit Preferences and update facebook acess_token
                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putString("access_token", facebookClient.getAccessToken());
                editor.putLong("access_expires", facebookClient.getAccessExpires());
                editor.commit();

                postToWall();
            }

            @Override
            public void onError(DialogError error) {
                // Function to handle error

            }

            @Override
            public void onFacebookError(FacebookError fberror) {
                // Function to handle Facebook errors

            }

        });
    }
}

private void postToWall() {
    Bundle parameters = new Bundle();
    parameters.putString("name", "Battery Monitor");
    parameters.putString("link", "https://play.google.com/store/apps/details?id=com.ck.batterymonitor");
    parameters.putString("picture", "link to the picture");
    parameters.putString("display", "page");
    // parameters.putString("app_id", "228476323938322");

    facebookClient.dialog(MainActivity.this, "feed", parameters, new DialogListener() {

        @Override
        public void onFacebookError(FacebookError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(DialogError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onComplete(Bundle values) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onCancel() {
            // TODO Auto-generated method stub
        }
    });
}

and at last:

        ImageButton facebookButton = (ImageButton) findViewById(R.id.button_FacebookShare);
        facebookButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                loginToFacebook();

                if (facebookClient.isSessionValid()) {
                    postToWall();
                }
            }
        });

It does an auto login to facebook and then displaies facebook share\post dialog. The code was taken from this tutorial

这篇关于使用FB API如何可以张贴在Facebook上的链接从Android应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆