Open Facebook Profile in Android SDK -
Open Facebook Profile in Android SDK -
note: issue arises when facebook app installed.
i'm trying open user's facebook profile page when imagebutton
clicked. after looking @ this suggested method more recent facebook app versions, it's working, exception of users friends logged in user (in app), or logged in user themselves.
the process is:
image button clicked call facebook graph api made link user's profile via facebook id (stored in our database) a newintent
created checking see if facebook app installed, , generating right uri a new activity
started generated intent
because we're using facebook graph api v2.0, username
field removed graphuser
object in json. problem facebook link (graphuser.getlink()
) either:
https://www.facebook.com/app_scoped_user_id/{protected-id}
a 'normal' facebook link user's real id (unprotected); format is: http://www.facebook.com/{real-user-id}
the real problem facebook uri when app installed expects either:
an app-scoped link a linkusername
attached it, not {user-id}
however, web version (opened in web view) doesn't care. link can app-scoped, username-based or id-based. works webview
s.
since username
inaccessible in graph api v2.0, i'm getting null
values, means facebook app can't generate right uri expects (username-based), id-based or app-scoped.
here code i'm using create intent
:
public static intent getfacebookintent(string facebookprofileurl) { packagemanager pm = app.getcontext().getpackagemanager(); uri uri; seek { pm.getpackageinfo("com.facebook.katana", 0); uri = uri.parse("fb://facewebmodal/f?href=" + facebookprofileurl); } grab (packagemanager.namenotfoundexception e) { uri = uri.parse(facebookprofileurl); } homecoming new intent(intent.action_view, uri); }
and here onclick()
method on imagebutton
:
new request( session.getactivesession(), string.valueof(mate.getfacebookid()), null, httpmethod.get, new request.callback() { public void oncompleted(response response) { graphuser g = response.getgraphobjectas(graphuser.class); string fburl = g.getlink(); // todo: if link not contain 'scoped', need username, not id string otherurl = "https://www.facebook.com/" + myappuser.getid(); string finalurl = (fburl.contains("scoped")) ? fburl : otherurl; intent intent = getfacebookintent(finalurl); intent.setflags(intent.flag_activity_new_task); context.startactivity(intent); } } ).executeasync();
i need username
if app installed, otherwise web view deals should.
so question: how can facebook username id facebook app? or, is there different uri facebook app expects can business relationship for, using ids , not usernames?
you should able utilize fb://profile/{user-id} url format launch native apps. allow utilize user id instead of username. rewrite getfacebookintent method as:
public intent getfacebookintent(graphuser user) { packagemanager pm = this.getpackagemanager(); uri uri; seek { pm.getpackageinfo("com.facebook.katana", 0); uri = uri.parse("fb://profile/" + user.getid()); } grab (packagemanager.namenotfoundexception e) { uri = uri.parse(user.getlink()); } homecoming new intent(intent.action_view, uri); }
you phone call method , pass in graphuser object.
android facebook facebook-graph-api
Comments
Post a Comment