xcode 在 iOS 中从 ACAccountStore 获取 Facebook uid?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14951984/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Get Facebook uid from ACAccountStore in iOS?
提问by Saravana Vijay
Hi i want to get the Facebook user's UID from ACAccountStorein iOS 6
嗨,我想从iOS 6 中的ACAccountStore获取 Facebook 用户的 UID
self.accountStore = [[ACAccountStore alloc]init];
ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSString *key = @"01234567890123";
NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];
[self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
^(BOOL granted, NSError *e) {
if (granted) {
NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType];
//it will always be the last object with single sign on
self.facebookAccount = [accounts lastObject];
//i Want to get the Facebook UID and log it here
NSLog(@"facebook account =%@",self.facebookAccount);
} else {
//Fail gracefully...
NSLog(@"error getting permission %@",e);
}
}];
self.facebookAccounthas UID, but i am unable to get it...
self.facebookAccount有 UID,但我无法获取它...
回答by Saravana Vijay
I wanted to get the UID without using the Facebook API. It can done by using the following method
我想在不使用 Facebook API 的情况下获取 UID。它可以通过使用以下方法完成
self.accountStore = [[ACAccountStore alloc]init];
ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSString *key = @"01234567890123";
NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];
[self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
^(BOOL granted, NSError *e) {
if (granted) {
NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType];
//it will always be the last object with single sign on
self.facebookAccount = [accounts lastObject];
//i got the Facebook UID and logged it here (ANSWER)
NSLog(@"facebook account =%@",[self.facebookAccount valueForKeyPath:@"properties.uid"]);
} else {
//Fail gracefully...
NSLog(@"error getting permission %@",e);
}
}];
回答by mrtnkrstn
You need to call the Facebook Graph API; use the SLRequest as follows:
您需要调用Facebook Graph API;使用 SLRequest 如下:
NSUrl requestURL = NSUrl.FromString("https://graph.facebook.com/me");
SLRequest sl = SLRequest.Create(SLServiceKind.Facebook, SLRequestMethod.Get, requestURL, null);
sl.Account = // your ACAccount object here
sl.PerformRequest((data, response, error) => {
if (error == null) {
// success! parse response
}
else {
// handle failure
}
});
That should do it!
应该这样做!