Proszę sprawdzić mój przykładowy projekt. To pozwala przesłać wideo na Facebooka, ale zawiera również metodę uzyskania informacji, powinieneś spojrzeć na plik ViewController.m
, ten zanotowany "Natywny" w kontrolce kart.
https://bitbucket.org/danielphillips/fb-video-upload
Trzeba będzie importować ram Social
i Accounts
robić, co chcesz. Żądasz dostępu do konta Facebook użytkownika z poziomu ACAccountStore
, jeśli masz przyznany dostęp, to użyjesz tego konta, aby utworzyć SLRequest
z żądanymi parametrami, tutaj chcesz obiekt graficzny "/ ja".
Właściwości:
@property (nonatomic, retain) ACAccountStore *accountStore;
@property (nonatomic, retain) ACAccount *facebookAccount;
Uwierzytelnij:
- (IBAction)getMeButtonTapped:(id)sender {
if(!_accountStore)
_accountStore = [[ACAccountStore alloc] init];
ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[_accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey: @"483616868329082", ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError *error) {
if(granted){
NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount];
_facebookAccount = [accounts lastObject];
NSLog(@"Success");
[self me];
}else{
// ouch
NSLog(@"Fail");
NSLog(@"Error: %@", error);
}
}];
}
Get "ja":
- (void)me{
NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"];
SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:meurl
parameters:nil];
merequest.account = _facebookAccount;
[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@", meDataString);
}];
}
Użyłem górnego kodu, pierwszy kod działa dobrze dla mnie. Ale następnym razem, gdy odłączyłem konto fb, a następnie ponownie połączono, wtedy błąd poniżej { error = { code = 190; message = "Znacznik dostępu został unieważniony na urządzeniu."; type = OAuthException; }; } – NSCry
@NSIllusion rozwiązałeś problem dostępu do tokena tutaj? – user717452
@ user717452 Prawie rozwiązany, ale nie znalazłem żadnej dobrej odpowiedzi, która wyglądałaby na przewodnika. Mój problem został rozwiązany poprzez zresetowanie zawartości i ustawień symulatora. – NSCry