How can I post link on facebook from android app using FB API?

前端 未结 2 878
南方客
南方客 2021-01-06 12:30

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

相关标签:
2条回答
  • 2021-01-06 12:51

    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

    0 讨论(0)
  • 2021-01-06 12:58

    I'm guessing that your problem is that you are using the stream.publish path which got deprecated:

    Please note: We are in the process of deprecating the REST API, so if you are building a new application you shouldn't use this function. Instead use the Graph API and POST a Post object to the feed connection of the User object

    instead do this:

    facebookClient.dialog(MainActivity.this, "feed", parameters, new DialogListener() {
    ...
    
    });
    
    0 讨论(0)
提交回复
热议问题