I know that Facebook has decided to encrypt app specific user id and the accepted way to acquire the current users id is to query the graph for /me. However, I noticed that my FBLoginView delegate method
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user;
returns a FBGraphUser which when accessing
[user objectForKey: @"id"]
returns my actual facebook id. Will this behavior change once all the calls are upgraded, or can I count on this object providing the correct facebook id?
User ids for users that logged into an app at least once using API v1 already will not change, your app will still receive the global user id for those; only for users that login using v2 for the first time (that is, have not used it before already), an app-scoped user id will be issued.
An app-scoped user id for a user that logged in for the first time only after v2 was used is the “correct” info. It is the only id your app is supposed to see when dealing with users that logged in via v2 for the first time. Your app can not use the global user id for such users any more, that will just result in an error.
Edit:
If a user used your app under v1 already, then you will still get their global user id, even if they removed the app from their settings and start using it again later on. (For example external websites that offer login via Facebook need that kind of consistency of course, so Facebook implemented it that way.)