Мне нужно отправить запрос приложения с помощью facebook sdk, так как это было невозможно через вызов графика. Я уже получил свой токен facebook, а также объект SLRequest с предоставленным разрешением на доступ (да). Я просто хочу создать сеанс fb, используя два вышеуказанных параметра, чтобы пользователю не нужно было вводить свои учетные данные во всплывающем окне, и учетные данные будут автоматически взяты из объекта SLrequest или Accounts или из токена доступа.
Сеанс Facebook с использованием SLRequest в iOS
comment
У меня та же проблема. У вас есть какое-нибудь решение для этого?
- person sahara108   schedule 24.04.2014
comment
@ sahara108 да, наконец, я нашел решение, пожалуйста, прочитайте ответ.
- person Rahul Mathur   schedule 24.04.2014
Ответы (1)
Наконец-то получили решение, вызовите requestGrantedForFb сразу после того, как вы получите свой запрос из хранилища учетных записей:
-(void)requestGrantedForFb
{
if (gblAppDelegate.session.isOpen)
{
[self SendReqClk];
} else
{
if (gblAppDelegate.session.state != FBSessionStateCreated)
{
gblAppDelegate.session = [[FBSession alloc] init];
}
NSArray *permissionArray = [NSArray arrayWithObjects:@"read_friendlists",@"basic_info",nil];
dispatch_async(dispatch_get_main_queue(), ^{
[FBSession openActiveSessionWithReadPermissions:permissionArray
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if (session.isOpen)
{
gblAppDelegate.session = session;
[self SendReqClk];
} else
{
gblAppDelegate.session = session;
}
}];
});
}
}
После этого
-(void)SendReqClk
{
NSError *error;
NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:@{
@"social_karma": @"5",
@"badge_of_awesomeness": @"1"}
options:0
error:&error];
if (!jsonData) {
NSLog(@"JSON error: %@", error);
return;
}
NSString *giftStr = [[NSString alloc]
initWithData:jsonData
encoding:NSUTF8StringEncoding];
NSMutableDictionary* params = [@{@"data" : giftStr} mutableCopy];
// Display the requests dialog
dispatch_async(dispatch_get_main_queue(), ^{
[FBWebDialogs
presentRequestsDialogModallyWithSession:gblAppDelegate.session
message:@"Welcome to !!! "
title:@"Join now !!!"
parameters:params
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
// Error launching the dialog or sending the request.
NSLog(@"Error sending request.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
// User clicked the "x" icon
NSLog(@"User canceled request.");
[self.navigationController popViewControllerAnimated:YES];
} else {
// Handle the send request callback
NSDictionary *urlParams = [self parseURLParams:[resultURL query]];
if (![urlParams valueForKey:@"request"]) {
// User clicked the Cancel button
NSLog(@"User canceled request.");
[self.navigationController popViewControllerAnimated:YES];
} else if(result== FBWebDialogResultDialogCompleted){
// User clicked the Send button
NSString *requestID = [urlParams valueForKey:@"request"];
UIAlertView *aAlertSuccess=[[UIAlertView alloc]initWithTitle:@"" message:@"Friend request sent successfully!!!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[aAlertSuccess show];
NSLog(@"Request ID: %@", requestID);
// [NSThread detachNewThreadSelector:@selector(stopActivity) toTarget:self withObject:nil];
// UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"my alert" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];//
// [alert setTag:125];
// [alert show];
}
}
}
}];
});
}
person
Rahul Mathur
schedule
24.04.2014
Спасибо, что поделились. Я также нахожу это решение. Но я просто делаю
[FBSession setActiveSession:session];
в обратном вызове. С этого момента я могу нормально использовать FB Sdk :P
- person sahara108; 24.04.2014