-
Notifications
You must be signed in to change notification settings - Fork 3
/
BragFacebook.m
123 lines (81 loc) · 3.5 KB
/
BragFacebook.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//
// BragFacebook.m
// wordsleuth
//
// Created by Brian D. Elliott on 6/7/11.
// Copyright 2011 Sparkle Software. All rights reserved.
//
#import "BragFacebook.h"
#import "WordURL.h"
@implementation BragFacebook
@synthesize facebook;
@synthesize numGuesses;
@synthesize bragConfirmationView;
- (id)init {
self = [super init];
if (self) {
// init with our facebook app id.
facebook = [[Facebook alloc] initWithAppId:@"177725138949291"];
bragConfirmationView = [[UIAlertView alloc] initWithTitle:@"Brag Posted" message:@"replaceme" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
}
return self;
}
- (void) brag:(NSInteger)score {
self.numGuesses = score;
NSArray* permissions = [[NSArray arrayWithObjects:@"publish_stream", @"offline_access", nil] retain];
// check for saved facebook credentials
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [userDefaults stringForKey:@"accessToken"];
NSDate *expirationDate = [userDefaults objectForKey:@"expirationDate"];
facebook.accessToken = accessToken;
facebook.expirationDate = expirationDate;
if ([facebook isSessionValid]) {
// still have a valid session
NSLog(@"Facebook session still valid, skipping login");
[self fbDidLogin];
} else {
NSLog(@"Facebook session not valid, need to authorize");
[facebook authorize:permissions delegate:self];
}
}
- (void)fbDidLogin {
// user authorized, the app. post to their wall.
// save the facebook credentials
[self saveFacebookSession];
NSString *msg = [NSString stringWithFormat:@"I guessed the Word du Jour in %d %@.", self.numGuesses, self.numGuesses == 1? @"try" : @"tries"];
NSMutableDictionary *d = [[NSMutableDictionary alloc] initWithCapacity:10];
[d setObject:msg forKey:@"message"];
NSString *wallPostURL = [WordURL getWallPostIconURL];
[d setObject:wallPostURL forKey:@"picture"];
// bit.ly shortened link to WdJ app store page:
NSString *link = @"http://bit.ly/lMU85K";
[d setObject:link forKey:@"link"];
// add name of the link param:
NSString *linkName = @"Word du Jour on the iTunes App Store";
[d setObject:linkName forKey:@"name"];
// caption appears in small text below the link name:
NSString *caption = @"Word du Jour is a fun word guessing game that helps build your vocabulary. Guess a new word every day and compete for the best score!";
[d setObject:caption forKey:@"caption"];
[facebook requestWithGraphPath:@"me/feed" andParams:d andHttpMethod:@"POST" andDelegate:self];
NSString *confirmationMsg = [NSString stringWithFormat:@"Brag posted to your Facebook wall!\n\n%\"%@\"", msg];
self.bragConfirmationView.message = confirmationMsg;
[bragConfirmationView show];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
- (void)saveFacebookSession {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:facebook.accessToken forKey:@"accessToken"];
[userDefaults setObject:facebook.expirationDate forKey:@"expirationDate"];
[userDefaults synchronize];
}
- (void)dealloc {
[facebook release];
facebook = nil;
numGuesses = 0;
[bragConfirmationView release];
bragConfirmationView = nil;
[super dealloc];
}
@end