[英]Android - Error: com.facebook.FacebookException: Failed to get app name
[英]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.