Note that there are some explanatory texts on larger screens.

plurals
  1. POEncountering Facebook SDK Error
    text
    copied!<p>I'm creating app that has share button on Facebook and I'm getting an error:</p> <p><strong>This Page Contains the following errors:</strong></p> <p><strong>error on line 2 at column 182: Entityref: expecting ';'</strong></p> <p><strong>Below is a rendering of the page up to the first error.</strong></p> <p>I don't get this error when I run the app on the Emulator. I'm only getting this kind of error when I run the app on the device.</p> <p>What is the possible cause of this error?</p> <p>Your help is highly appreciated. Thanks!</p> <p>Code below is sample code for Facebook SDK:</p> <pre><code>public class FacebookShare extends Activity { private String APP_ID, APP_SECRET, Name, Link, Description, Picture; private int fbTYPE; private Facebook facebook; private AsyncFacebookRunner mAsyncRunner; private Activity ctx; private Bitmap bitmap; SharedPreferences mPrefs; public FacebookShare(Activity ctx) { APP_ID = "...obfuscated..."; facebook = new Facebook(APP_ID); mAsyncRunner = new AsyncFacebookRunner(facebook); this.ctx = ctx; } public void shareFB(int TypeOfSharing) { APP_ID = "...obfuscated..."; facebook = new Facebook(APP_ID); mAsyncRunner = new AsyncFacebookRunner(facebook); this.fbTYPE = TypeOfSharing; loginToFacebook(); } public void loginToFacebook() { Log.v("debugging", "Entered Login to facebook"); String access_token = mPrefs.getString("access_token", ""); long expires = mPrefs.getLong("access_expires", 0); if (!access_token.equals("")) { facebook.setAccessToken(access_token); Log.v("Access Token", facebook.getAccessToken()); } if (expires != 0) { facebook.setAccessExpires(expires); } if (!facebook.isSessionValid()) { Log.v("debugging", "Session is Invalid"); facebook.authorize(ctx, new String[]{ "email","publish_stream" }, facebook.FORCE_DIALOG_AUTH, new DialogListener() { public void onCancel() { // Function to handle cancel event } public void onComplete(Bundle values) { // Function to handle complete event // Edit Preferences and update facebook acess_token SharedPreferences.Editor editor = mPrefs.edit(); editor.putString("access_token", facebook.getAccessToken()); editor.putLong("access_expires", facebook.getAccessExpires()); editor.commit(); if (fbTYPE == 1) { postToWall(); } else if (fbTYPE == 0) { postToWall(getBitmap()); } } public void onError(DialogError error) { Log.v("debugging", error.getMessage()); } public void onFacebookError(FacebookError fberror) { Log.v("debugging", fberror.getMessage()); } }); Log.v("debugging", "Passed from authorization"); } else { if (fbTYPE == 1) { Log.v("debugging", "Entered Post to facebook"); postToWall(); } else if (fbTYPE == 0) { Log.v("debugging", "Entered Post image to facebook"); postToWall(getBitmap()); } } } public void clearCredentials() { try { facebook.logout(ctx); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void postToWall() { // post on user's wall. Bundle params = new Bundle(); params.putString("description", getDescription()); params.putString("picture", getPicture()); params.putString("name", getName()); params.putString("link", getLink()); facebook.dialog(ctx, "feed", params, new DialogListener() { public void onFacebookError(FacebookError e) { } public void onError(DialogError e) { } public void onComplete(Bundle values) { Toast.makeText(ctx, "Thanks for sharing JOLENPOP", Toast.LENGTH_SHORT).show(); } public void onCancel() { // Login_Activity.asyncFBLogin fblogin = null; // fblogin.execute(); } }); } public void postToWall(Bitmap bmImage) { Log.v("debugging", "entered postToWall(bitmap)"); byte[] data = null; Bitmap bm = Bitmap.createBitmap(bmImage); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(CompressFormat.JPEG, 100, baos); data = baos.toByteArray(); Bundle params = new Bundle(); params.putString("method", "post"); params.putString("message", getDescription()); params.putByteArray("image", data); try { String response = facebook.request("me"); response = facebook.request("me/photos", params, "POST"); if (response == null || response.equals("") || response.equals("false")) { Log.v("response String", response); return; } else if (response.toLowerCase().contains("error")) { Log.v("response String", response); return; } } catch (Exception e) { return; } Toast.makeText(ctx, "Your photo has been successfuly published!", Toast.LENGTH_LONG).show(); } public void getProfileInformation() { mAsyncRunner.request("me", new RequestListener() { public void onComplete(String response, Object state) { Log.d("Profile", response); String json = response; try { JSONObject profile = new JSONObject(json); // getting name of the user String name = profile.getString("name"); // getting email of the user String email = profile.getString("email"); runOnUiThread(new Runnable() { public void run() { // Toast.makeText(getApplicationContext(), "Name: " + name // + "\nEmail: " + email, Toast.LENGTH_LONG).show(); } }); } catch (JSONException e) { e.printStackTrace(); } } public void onIOException(IOException e, Object state) { } public void onFileNotFoundException(FileNotFoundException e, Object state) { } public void onMalformedURLException(MalformedURLException e, Object state) { } public void onFacebookError(FacebookError e, Object state) { } }); } /** * setters * */ public void setFacebook(Facebook facebook) { this.facebook = facebook; } public void setAsyncRunner(AsyncFacebookRunner mAsyncRunner) { this.mAsyncRunner = mAsyncRunner; } public void setPrefs(SharedPreferences mPrefs) { this.mPrefs = mPrefs; } public void setName(String val) { this.Name = val; } public void setLink(String val) { this.Link = val; } public void setBitmap(Bitmap val) { this.bitmap = val; } public void setDescription(String val) { this.Description = val; } public void setPicture(String val) { this.Picture = val; } /** * getters * */ public String getAppID() { return this.APP_ID; } public String getName() { return this.Name; } public String getLink() { return this.Link; } public String getDescription() { return this.Description; } public String getPicture() { return this.Picture; } public Bitmap getBitmap() { return this.bitmap; } } </code></pre> <p>Here how I used it:</p> <pre><code>fbShare = new FacebookShare(this); mPrefs = PreferenceManager.getDefaultSharedPreferences(this); </code></pre> <p>then;</p> <pre><code>Bitmap screenshot = this.glSurfaceView.mRenderer.screenCapture; fbShare.setName("JOLENPOP"); fbShare.setDescription("I got a score of " + this.glSurfaceView.mRenderer.Score + " in JOLENPOP! Try to beat me!"); fbShare.setBitmap(screenshot); fbShare.setPrefs(mPrefs); fbShare.shareFB(0); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload