Domanda

I'm trying to open a Share Dialog inside my app with Open Graph, and it opens properly but after a few seconds crashes.

My code follows the documentation at https://developers.facebook.com/docs/android/share-dialog/#publish-og-with-user-objects but with slightly different constructors for createForPost, though I tried both ways.

private void shareToFB(Context context) {
    if (FacebookDialog.canPresentOpenGraphActionDialog(context.getApplicationContext(),
            FacebookDialog.OpenGraphActionDialogFeature.OG_ACTION_DIALOG)) {
        OpenGraphObject badge = OpenGraphObject.Factory.createForPost
                (OpenGraphObject.class, "exercisemeapp:badge", "I earned a new badge!",
                        "http://4sqday16.files.wordpress.com/2011/11/foursquare-gym-rat-badge.png",
                        null, "I completed a full body workout for 7 straight days!");
        OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
        action.setProperty("badge", badge);
        action.setType("exercisemeapp:earn");

        FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(getActivity(), action, "badge")
                .build();
        uiHelper.trackPendingDialogCall(shareDialog.present());
    } else {
        Toast.makeText(getActivity(), "Facebook not available", Toast.LENGTH_SHORT).show();
    }
}

The only errors I'm seeing in logcat are the following:

1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl', referenced from method com.facebook.ssl.openssl.check.CheckOpenSSLImplHasRequiredMethods.<clinit>
1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl', referenced from method com.facebook.ssl.openssl.reflect.SSLParametersGetter.<clinit>
1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'org.apache.harmony.xnet.provider.jsse.SSLParametersImpl', referenced from method com.facebook.ssl.openssl.reflect.SSLParametersGetter.a
1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'org.apache.harmony.xnet.provider.jsse.SSLParametersImpl', referenced from method com.facebook.ssl.openssl.reflect.SSLSessionTimeoutSetter.<clinit>
1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'org.apache.harmony.xnet.provider.jsse.ClientSessionContext', referenced from method com.facebook.ssl.openssl.reflect.SSLSessionTimeoutSetter.a
1525-1525/com.facebook.katana E/dalvikvm﹕ Could not find class 'com.facebook.ssl.openssl.TicketEnabledOpenSSLSocketImplWrapper', referenced from method com.facebook.ssl.openssl.TicketEnabledOpenSSLSocketFactoryHelper.a

And the warning:

Exception during service com.facebook.http.protocol.ApiException: 
(#404) Key hash bMpkGAEDBrEt9w9JMM_UU5Jx-Cc does not match any stored key hashes.
at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:103)
È stato utile?

Soluzione

Looks like your app's hash key and the one registered with facebook do not match. This is what facebook says.

Every Android app you'll create will be signed, and you will need to register each app's key hash with Facebook as a security check for authenticity

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top