2015-06-15 56 views
0

目前使用Facebook的4.0 API,我嘗試發佈的消息,但我收到錯誤如下:
無法在Facebook的API 4.0共享信息,與錯誤:錯誤發佈消息

Error: Error publishing message

尋找幫助上這個問題。

private CallbackManager callbackManager; 
private ShareDialog shareDialog; 
private FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() { 
    @Override 
    public void onCancel() { 
     Log.d("HelloFacebook", "Canceled"); 
    } 

    @Override 
    public void onError(FacebookException error) { 
     Log.d("HelloFacebook", String.format("Error: %s", error.toString())); 
    } 

    @Override 
    public void onSuccess(Sharer.Result result) { 
     Log.d("HelloFacebook", "Success!"); 
    } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    getHashKey(); 

    findViewById(R.id.btn_post).setOnClickListener(this); 

    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 

    shareDialog = new ShareDialog(this); 
    shareDialog.registerCallback(callbackManager, shareCallback); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

@Override 
public void onClick(View v) { 
    postStatus(); 
} 

private void postStatus() { 
    ShareLinkContent linkContent = new ShareLinkContent.Builder() 
      .setContentTitle("Hello UTU") 
      .setContentDescription("The 'Hello Facebook' sample showcases simple Facebook integration") 
      .setContentUrl(Uri.parse("http://static.comicvine.com/uploads/original/11114/111141352/3551664-iron-man-6800-hd-wallpapers.jpg")) 
      .build(); 

    if (ShareDialog.canShow(ShareLinkContent.class)) { 
     shareDialog.show(linkContent); 
    } 
} 

private void getHashKey() { 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "com.facebook.samples.hellofacebook", 
       PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    } 
} 
+0

您是否指定了在清單中共享內容所需的提供程序?您還應該嘗試記錄返回的FacebookException的堆棧跟蹤,以更詳細地瞭解哪些地方出了問題以及在哪裏。 – Guardanis

回答

0

上面的代碼正在工作。實際上,問題是由於Facebook開發控制檯中的應用程序配置設置。需要提供完整的軟件包名稱和主要活動。不管怎麼說,還是要謝謝你。