2012-09-26 17 views
0

其實我有一個問題 - 我在我的應用程序中登錄到Facebook。我也可以做用戶授權的牆貼,但我需要每次調用授權 - 這需要一些時間,並導致在屏幕上(短時間)的事實,有「盒子」與白色背景(https://dl.dropbox.com/u/41114685/1.JPG)即生成(誘導)Facebook。這就是爲什麼我感興趣的是,是否有可能在用戶的牆上做一個帖子不會導致,每次都需要一種驗證方法(使方法onComplete()使帖子出來)? 我希望你的幫助。是否有可能在Facebook用戶的牆上發佈帖子,並且在每種情況下都沒有授權?

package expir.java.file; 

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.net.MalformedURLException; 

import com.facebook.android.DialogError; 
import com.facebook.android.Facebook; 
import com.facebook.android.Facebook.DialogListener; 
import com.facebook.android.FacebookError; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 

public class FacebookAuthorizeAndPost implements DialogListener{ 

FacebookAuthorizeAndPost(Activity activity){ 
    this.activity = activity; 
} 

public void facebookAuthorize(){ 
    facebookClient = new Facebook(APP_ID); 
    facebookClient.authorize(activity, new String[]{"publish_stream"}, Facebook.FORCE_DIALOG_AUTH, this); 
} 

public void onComplete(Bundle values) { 
    if (values.isEmpty()) 
    { 
     return; 
    } 
    if (!values.containsKey("post_id")) 
    { 
     try 
     { 
      Bundle cont = new Bundle(); 
      cont.putString("message", "bla-bla-bla"); 
      cont.putString("name", "Testing facebook"); 
      cont.putString("link", "www.????????.com"); 
      cont.putString("description", "This is a funny real test!!! This is a funny real test!!! This is a funny real test!!! This is a funny real test!!!"); 
      cont.putString("picture", "http://code.google.com/p/android-developer-scripts/logo?cct=1294556390"); 
      //facebookClient.dialog(activity, "feed", cont, this); 
      facebookClient.request("me/feed", cont, "POST"); 
     } 
     catch (Exception e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

public void onFacebookError(FacebookError e) { 
    // 
} 

public void onError(DialogError e) { 
    // 
} 

public void onCancel() { 
    // 
} 

public Activity activity; 
private final String APP_ID = "??????????????????"; 
private Facebook facebookClient; 

} 

回答

0

可以使用FacebookisSessionValid()方法來檢查是否有效的未過期的會話存在,如果它不然後調用authorize()方法與發佈用戶的牆上,否則繼續。

請同時參閱這篇文章在這裏:http://blog.doityourselfandroid.com/2011/02/28/30-minute-guide-integrating-facebook-android-application/

+0

你能解釋一下爲什麼需要包括SessionEvents.AuthListener? –

+0

這在教程中有很好的解釋:「需要注意的一點是,當用戶點擊發布消息按鈕時,除了登錄之外,我們還想發送消息到Facebook牆。執行登錄,緊接着是可以通過向SessionEvents添加一個AuthenticationListener(SessionEvents.AuthListener)來完成一個動作(在這種情況下發送一條消息)。「 - 所以基本上它被用來將監聽器掛鉤到auth事件,並且一旦通過認證就在牆上發佈信息 – Waqas

相關問題