簡體   English   中英

錯誤:com.facebook.FacebookException:無法為用戶生成預覽

[英]Error: com.facebook.FacebookException: Failed to generate preview for user

我在用戶牆上發布了一個自定義故事。為此,我在代碼中創建了一個對象和動作。我已經從https://developers.facebook.com/docs/android/open-graph/鏈接完成了我的代碼。我正在使用Facebook對話框發布自定義故事。

當開發人員使用他的Facebook帳戶完成並在時間軸上發布時,此代碼工作正常。.當開發人員在此應用程序中使用其Facebook帳戶lo-gin時,此應用程序將打開Facebook對話框以發布自定義故事,而另一個人則使用lo-gins他/她在此應用程序中的Facebook帳戶,將顯示Facebook對話框,並立即消失。 並顯示錯誤Error: com.facebook.FacebookException:無法為用戶生成預覽。

我想知道我的代碼中是否有任何問題或任何其他原因。我也已在開發者帳戶中注冊了我的應用程序.i使用以下代碼來執行此操作。任何知道或已經這樣做的人請告訴我該怎么做這將非常感謝您。我還想告訴我,我正在使用Facebook sdk 3.7。

public class MainActivity extends Activity {
                    Button button1;
                    private static final String TAG = "MainActivity";
                    private UiLifecycleHelper uiHelper;
                    private static final List<String> PERMISSIONS = Arrays
                            .asList("publish_actions");
                    private static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization";
                    private ProgressDialog progressDialog;
                    private boolean pendingPublishReauthorization = false;

                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main);

                        button1 = (Button) findViewById(R.id.button1);

                        uiHelper = new UiLifecycleHelper(this, callback);
                        uiHelper.onCreate(savedInstanceState);
                        Session session = Session.getActiveSession();
                        if (!session.isOpened() && !session.isClosed()) {
                            session.openForRead(new Session.OpenRequest(this).setPermissions(
                                    Arrays.asList("basic_info", "email","user_birthday","user_location","user_hometown","user_about_me","user_relationships")).setCallback(callback));
                            session.openForPublish(new Session.OpenRequest(this).setPermissions(
                                    Arrays.asList("publish_actions")).setCallback(callback));
                        } else {
                            Session.openActiveSession(this, true, callback);
                        }

                        button1.setOnClickListener(new OnClickListener() {

                            @SuppressWarnings("deprecation")
                            @Override
                            public void onClick(View v) {

                                OpenGraphObject meal = OpenGraphObject.Factory
                                        .createForPost("music.song");
                                meal.setProperty("title", "Competent Groove");
                                meal.setProperty("image",
                                        "http://example.com/cooking-app/images/buffalo-tacos.png");
                                meal.setProperty("url",
                                        "https://example.com/cooking-app/meal/Buffalo-Tacos.html");
                                meal.setProperty("description",
                                        "requested a hasher song at pizzahutt via Blureffect");

                                OpenGraphAction action = GraphObject.Factory
                                        .create(OpenGraphAction.class);
                                action.setProperty("song", meal);

                                FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(
                                        MainActivity.this, action, "blureffect_unique:request",
                                        "song").build();

                                uiHelper.trackPendingDialogCall(shareDialog.present());
                            }
                        });

                    }

                    @Override
                    public boolean onCreateOptionsMenu(Menu menu) {
                        // Inflate the menu; this adds items to the action bar if it is present.
                        getMenuInflater().inflate(R.menu.main, menu);
                        return true;
                    }

                    private Session.StatusCallback callback = new Session.StatusCallback() {
                        @Override
                        public void call(Session session, SessionState state,
                                Exception exception) {
                            onSessionStateChange(session, state, exception);

                        }
                    };

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

                        uiHelper.onActivityResult(requestCode, resultCode, data,
                                new FacebookDialog.Callback() {
                                    @Override
                                    public void onError(FacebookDialog.PendingCall pendingCall,
                                            Exception error, Bundle data) {
                                        Log.e("Activity",
                                                String.format("Error: %s", error.toString()));
                                    }

                                    @Override
                                    public void onComplete(
                                            FacebookDialog.PendingCall pendingCall, Bundle data) {
                                        Log.i("Activity", "Success!");
                                        button1.setEnabled(true);

                                    }
                                });
                    }

                    @SuppressWarnings("deprecation")
                    private void onSessionStateChange(Session session, SessionState state,
                            Exception exception) {
                        if (session != null && session.isOpened()) {
                            Log.d("DEBUG", "facebook session is open ");
                            // make request to the /me API
                            Request.executeMeRequestAsync(session,
                                    new Request.GraphUserCallback() {
                                        // callback after Graph API response with user object

                                        @Override
                                        public void onCompleted(GraphUser user,
                                                Response response) {
                                            if (user != null) {

                                                  button1.setEnabled(true);

                                                  Log.i("Birthday", ""+user.getBirthday());
                                                  Log.i("LastName", ""+user.getLastName());
                                                  Log.i("FirstName", ""+user.getFirstName());
                                                  Log.i("getId", ""+user.getId());
                                                  Log.i("email", ""+user.asMap().get("email"));
                                                  Log.i("gender", ""+user.asMap().get("gender"));
                                                  Log.i("Birthday", ""+user.getBirthday());
                                                  Log.i("city", ""+user.getLocation().getProperty("name").toString());

                                            }

                                        }
                                    });
                        }
                    }

                    @Override
                    protected void onResume() {
                        super.onResume();
                        uiHelper.onResume();
                    }

                    @Override
                    protected void onSaveInstanceState(Bundle outState) {
                        super.onSaveInstanceState(outState);
                        uiHelper.onSaveInstanceState(outState);
                    }

                    @Override
                    public void onPause() {
                        super.onPause();
                        uiHelper.onPause();
                    }

                    @Override
                    public void onDestroy() {
                        super.onDestroy();
                        uiHelper.onDestroy();
                    }

                    /*
                     * Helper method to check a collection for a string.
                     */
                    @SuppressWarnings("unused")
                    private boolean isSubsetOf(Collection<String> subset,
                            Collection<String> superset) {
                        for (String string : subset) {
                            if (!superset.contains(string)) {
                                return false;
                            }
                        }
                        return true;
                    }

                    /*
                     * Helper method to dismiss the progress dialog.
                     */
                    @SuppressWarnings("unused")
                    private void dismissProgressDialog() {
                        // Dismiss the progress dialog
                        if (progressDialog != null) {
                            progressDialog.dismiss();
                            progressDialog = null;
                        }
                    }
                }

在此處輸入圖片說明 用於生成哈希密鑰

private PackageInfo INFO = null; //global declaration
    public void generateHashKeyForFacebook(Context context) throws Exception {
            try {
                INFO = context.getPackageManager().getPackageInfo("com.bito1.Shoplu", PackageManager.GET_SIGNATURES);
                if (INFO == null) {
                    Toast.makeText(context.getApplicationContext(), "Invalid Package Name / Package not found", Toast.LENGTH_LONG).show();
                    return;
                }
                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) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM