2013-01-06 1 views
8

내 페이스 북 벽에 게시하는 클래스를 만들 수있었습니다. 하지만 내 페이스 북 팬 페이지에서 공유 할 코드를 어떻게 변경합니까?페이스 북에 게시 팬 페이지에서 앱

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된다 : https://developers.facebook.com/docs/reference/api/

+0

다음과 같이 페이지 ID를 추가했습니다. String response = facebook.request ("1187095234234/feed", parameters, "POST"); 하지만 그것은 작동하지 않습니다 ... 나는 페이지 ID를 다르게 통합해야합니까? 다른 권한이 필요합니까? – LxSwiss

+0

그것은 일했습니다! 권한 중 하나가 필요합니다 publish_actions manage_pages publish_stream – LxSwiss

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

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

여기 그래프 API를 사용하는 방법에 대해 알아

이 작업은 가능하지만 페이지에 게시하려면 Mangage_Pages 및 Publish_stream 권한이있는 액세스 토큰이 필요합니다.