2011-04-26 49 views
0

我已经与Facebook Android SDK中这些时间的实验......Android的Facebook应用程序interupt的Facebook SDK

顺便说一句,我使用Facebook到Android集成的教程,在弹出的对话框布局... 链接http://integratingstuff.com/2010/10/14/integrating-facebook-into-an-android-application/

这个代码,我使用:

public class Sharefb extends Activity { 
private static final String APP_ID = "xxxxxxxxxxxxxxxx"; 
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.main); 

    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, new LoginDialogListener()); 
} 

public void postToWall(String message){ 
    Bundle parameters = new Bundle(); 
     parameters.putString("message", message); 
     facebook.dialog(this, "stream.publish", parameters, new WallPostDialogListener()); 
} 

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(); 
    } 
} 

class WallPostDialogListener implements DialogListener { 
    public void onComplete(Bundle values) { 
       final String postId = values.getString("post_id"); 
       if (postId != null) { 
       showToast("Message posted to your facebook wall!"); 
      } else { 
       showToast("Wall post cancelled!"); 
      } 
      finish(); 
     } 
    public void onFacebookError(FacebookError e) { 
     showToast("Failed to post to wall!"); 
     e.printStackTrace(); 
     finish(); 
    } 
    public void onError(DialogError e) { 
     showToast("Failed to post to wall!"); 
     e.printStackTrace(); 
     finish(); 
    } 
    public void onCancel() { 
     showToast("Wall post cancelled!"); 
     finish(); 
    } 
    } 

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

不幸的是,每一次我做的请求......窗口只是闪烁几秒钟,然后完成...

后来,当我删除我的模拟器上的Facebook应用程序,它工作正常,我可以发布新消息在我的墙上...

有什么不对吗? 我希望你们大家很快会发现

坦克你!

+0

你们中的一些人可能有窗口覆盖或其某种类型的问题...,但这不是问题!我已经通过删除我的清单上的theme.dialog使布局独立,并且仍然无法发布我的消息,直到我删除我的模拟器上的Facebook应用程序... – user724861 2011-04-26 06:54:46

+0

我不确定,但请检查此链接:http:// stackoverflow .COM /问题/ 5786442/Android的Facebook的共享问题上的设备 – Farhan 2011-04-26 07:03:26

回答

1

我找到了解决问题的办法;在这里看到:

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

以前游览使用此为登录替换此行:

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

你有一个输出,让你的应用程序登录页面只,但不是主要的Facebook应用程序登录页面。

相关问题