だから私はFacebookのフィードダイアログをポップアップさせようとしていますが、ポップアップするとすぐに失敗するか何かのように閉じます。ところで、アプリケーションがインストールされている場合にのみ、私は facebook を扱っています。インストールされていない限り、共有したくありません。
ここから出発します: https://developers.facebook.com/docs/howtos/androidsdk/3.0/feed-dialog/
承認とログインのためにこれと少し統合されています: https://developers.facebook.com/docs/howtos/androidsdk/3.0/native-login/
これが私のコードです:
private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
public void sendToFacebook()
{
if (session != null && session.isOpened()) {
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(activity, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
final Bundle parameters = new Bundle();
parameters.putString(NAME, app name);
parameters.putString(LINK, info);
parameters.putString(PICTURE, picture link);
parameters.putString(CAPTION, "caption stuff");
parameters.putString(DESCRIPTION, "description");
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
WebDialog feedDialog = (
new WebDialog.FeedDialogBuilder(activity,
Session.getActiveSession(),
parameters))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,
FacebookException error) {
//do something
}
})
.build();
feedDialog.show();
}
});
}else{
initFacebookEngine(); //inits or opens the session.
}
}
private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
for (String string : subset) {
if (!superset.contains(string)) {
return false;
}
}
return true;
}
private void initFacebookEngine() {
if(session == null){
session = new Session.Builder(ctx).build();
}
if(!session.isOpened() || !session.isClosed()){
session.openForPublish(new Session.OpenRequest(activity)
.setPermissions(PERMISSIONS)
.setCallback(callback));
}else{
Session.openActiveSession(activity, true, callback);
}
sendToFacebook メソッドを呼び出します。コールバックは、呼び出されたときに sendToFacebook を呼び出すだけです。コードは認証と許可を行いますが、フィード ダイアログにはその顔が表示されません。Facebook は何かをしているように振る舞いますが、終了してアプリに戻ります。誰が何が起こっているのか知っていますか?