2013-01-06 15 views
8

के माध्यम से मैंने अपनी कक्षा की दीवार पर एक कक्षा बनाने में कामयाब रहा है। लेकिन मैं अपने फेसबुक fanpage पर साझा करने के लिए कोड कैसे बदलूं? मैं गूगल या ढेर अतिप्रवाह पर कुछ भी नहीं मिल सकता है ...फेसबुक पर पोस्ट करें फैन पेज ऐप

यहाँ वर्ग जो फेसबुक पर साझा करता है:

package com.celticwolf.blahblah; <--- changed 

import com.facebook.android.*; 
import com.facebook.android.Facebook.DialogListener; 

import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.Window; 
import android.widget.Toast; 

public class ShareOnFacebook extends Activity{ 

    private static final String APP_ID = "35255389027859"; <--- changed 
    private static final String[] PERMISSIONS = new String[] {"publish_stream"}; 

    private static final String TOKEN = "access_token"; 
     private static final String EXPIRES = "expires_in"; 
     private static final String KEY = "facebook-credentials"; 

    private Facebook facebook; 
    private String messageToPost; 

    public boolean saveCredentials(Facebook facebook) { 
      Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit(); 
      editor.putString(TOKEN, facebook.getAccessToken()); 
      editor.putLong(EXPIRES, facebook.getAccessExpires()); 
      return editor.commit(); 
     } 

     public boolean restoreCredentials(Facebook facebook) { 
      SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE); 
      facebook.setAccessToken(sharedPreferences.getString(TOKEN, null)); 
      facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0)); 
      return facebook.isSessionValid(); 
     } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     facebook = new Facebook(APP_ID); 
     restoreCredentials(facebook); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     setContentView(R.layout.facebook_dialog); 

     String facebookMessage = getIntent().getStringExtra("facebookMessage"); 
     if (facebookMessage == null){ 
      facebookMessage = "Test wall post"; 
     } 
     messageToPost = facebookMessage; 
    } 

    public void doNotShare(View button){ 
     finish(); 
    } 
    public void share(View button){ 
     if (! facebook.isSessionValid()) { 
      loginAndPostToWall(); 
     } 
     else { 
      postToWall(messageToPost); 
     } 
    } 

    public void loginAndPostToWall(){ 
     facebook.authorize(this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener()); 
    } 

    public void postToWall(String message){ 
     new MyAsyncTask().execute(message); 
    } 




class MyAsyncTask extends AsyncTask<String,Void,Boolean> 
{ 
public Boolean doInBackground(String ...message){ 

    Bundle parameters = new Bundle(); 
      parameters.putString("message", message[0]); 
      parameters.putString("description", "topic share"); 
      try { 
       facebook.request("me"); 
     String response = facebook.request("me/feed", parameters, "POST"); <--- I think here is the crucial part 
     Log.d("Tests", "got response: " + response); 
     if (response == null || response.equals("") || 
       response.equals("false")) { 
      return Boolean.FALSE; 
     } 
     else { 
      return Boolean.TRUE; 
     } 
    } catch (Exception e) { 

     e.printStackTrace(); 
     return Boolean.FALSE; 
    } 
} 

public void onPostExecute(Boolean result){ 
     if(result == Boolean.TRUE){ 
showToast("posted successfully"); 
}else{ 
showToast("couldn't post to FB."); 
} 
     finish(); 
} 
} 






    class LoginDialogListener implements DialogListener { 
     public void onComplete(Bundle values) { 
      saveCredentials(facebook); 
      if (messageToPost != null){ 
      postToWall(messageToPost); 
     } 
     } 
     public void onFacebookError(FacebookError error) { 
      showToast("Authentication with Facebook failed!"); 
      finish(); 
     } 
     public void onError(DialogError error) { 
      showToast("Authentication with Facebook failed!"); 
      finish(); 
     } 
     public void onCancel() { 
      showToast("Authentication with Facebook cancelled!"); 
      finish(); 
     } 
    } 

    private void showToast(String message){ 
     Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 
    } 
} 

धन्यवाद!

उत्तर

11

String response = facebook.request("me/feed", parameters, "POST"); 

me/feedPAGE_ID/feed हो जाता है:

String response = facebook.request("PAGE_ID/feed", parameters, "POST"); 

जानें कैसे ग्राफ़ एपीआई यहाँ उपयोग करने के लिए: https://developers.facebook.com/docs/reference/api/

+0

मैंने इस तरह के पेज आईडी को जोड़ दिया है: स्ट्रिंग प्रतिक्रिया = facebook.request ("1187095234234/फ़ीड", पैरामीटर, "पोस्ट"); लेकिन यह काम नहीं करता है ... क्या मुझे पेज आईडी को अलग-अलग एकीकृत करना है? और क्या मुझे किसी अन्य अनुमति की आवश्यकता है? – LxSwiss

+0

यह काम किया !! guarantet अनुमतियों में से एक को output_actions manage_pages publ_stream – LxSwiss

-1
String response = facebook.request("PAGE_ID/feed", parameters, "POST"); 

यह काम करेगा लेकिन किसी पृष्ठ में पोस्ट करने के लिए आपको Mangage_Pages और Publish_stream अनुमतियों के साथ टोकन तक पहुंच की आवश्यकता होगी।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^