Facebookでデータを共有するAndroidアプリケーションを開発しています。ログイン認証をFacebook SDK 3.0.2
正常に実装し、Facebook 共有も実装しましたが、Facebook アプリがデバイスに既にインストールされていると問題が発生します。
デバイスに Facebook アプリが既にある場合、私のアプリはネイティブの Facebook アプリのログインと共有方法に移動し、正常にログインしますが、クリックして共有すると、「myApp があなたのパブリック プロファイルと友達リストにアクセスしようとしています」と表示されます。OKボタンをクリックしても何もしません。私はたくさん検索しましたが、有用な解決策は見つかりませんでした。また、Facebook のドキュメントにも解決策が見つかりませんでした。
private void publishFeedDialog(String title, String description,
String time, String imageUrl) {
String fileId = m_YouScoopList.get(mShareIndex).file_id;
String linkUrl = "";
if (m_YouScoopList.get(mShareIndex).file_type_id.equals("2")) {
linkUrl = "http://www.mywebsite.com/news/my/imageshare/"
+ fileId;
} else {
linkUrl = "http://www.mywebsite.com/news/imageshare/videoshare/"
+ fileId;
}
Bundle params = new Bundle();
params.putString("name", "" + title);
params.putString("caption", "" + time);
params.putString("description", "" + description);
params.putString("link", linkUrl);
params.putString("picture", "" + imageUrl);
WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(
MainActivity5.this, Session.getActiveSession(), params))
.setOnCompleteListener(new OnCompleteListener() {
public void onComplete(Bundle values,
FacebookException error) {
// TODO Auto-generated method stub
if (error == null) {
// When the story is posted, echo the success
// and the post Id.
final String postId = values.getString("post_id");
if (postId != null) {
Toast.makeText(MainActivity5.this,
"Posted on facebook successfully!",
Toast.LENGTH_SHORT).show();
} else {
// User clicked the Cancel button
Toast.makeText(
MainActivity5.this
.getApplicationContext(),
"Publish cancelled", Toast.LENGTH_SHORT)
.show();
}
} else if (error instanceof FacebookOperationCanceledException) {
// User clicked the "x" button
Toast.makeText(
MainActivity5.this.getApplicationContext(),
"Publish cancelled", Toast.LENGTH_SHORT)
.show();
} else {
// Generic, ex: network error
Toast.makeText(
MainActivity5.this.getApplicationContext(),
"Error posting story", Toast.LENGTH_SHORT)
.show();
}
}
}).build();
feedDialog.show();
}