से ViewShowingLoggedInUser पहली बार फेसबुक एसडीके का उपयोग कर रहा हूं। मैं Xcode 5.1 और iOS के साथ काम कर रहा हूँ 7.लॉगिन करने के लिए कॉल नहीं हो रहा है FiewLoginView
मैं प्रोग्राम के रूप में प्रदर्शित FBLoginView:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"viewDidLoad");
// Do any additional setup after loading the view.
if (!loginView) {
// loginView =[[FBLoginView alloc] initWithReadPermissions:@[@"basic_info"]];
loginView =[[FBLoginView alloc] initWithReadPermissions:[NSArray arrayWithObjects:@"basic_info", @"user_location", nil]];
}
loginView.delegate = self;
loginView.frame = CGRectOffset(loginView.frame,
(self.view.center.x -(loginView.frame.size.width /2)), 5);
CGPoint vCenter = CGPointMake(CGRectGetMidX(self.view.frame),
CGRectGetMidY(self.view.frame));
CGPoint lvCenter = CGPointMake(vCenter.x, vCenter.y+100.0);
loginView.center = lvCenter;
[self.view addSubview:loginView];
[self updateView];
}
मैं आवश्यक ओवरराइड कार्यों को लागू किया है:
#pragma mark - FBLoginViewDelegate
- (void) loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user {
NSLog(@"loginViewFetchedUserInfo");
[self updateView];
}
- (void) loginViewShowingLoggedInUser:(FBLoginView *)loginView {
NSLog(@"loginViewShowingLoggedInUser");
[self updateView];
}
- (void) loginViewShowingLoggedOutUser:(FBLoginView *)loginView {
NSLog(@"loginViewShowingLoggedOutUser");
[self updateView];
}
- (void)updateView {
NSLog(@"FB updateView");
[[FBRequest requestForMe] startWithCompletionHandler:
^(FBRequestConnection *connection, NSDictionary<FBGraphUser>*FBUser, NSError *error) {
if (error) {
NSLog(@"updateView - error");
} else {
NSLog(@"updateView - good");
NSNumber *owner_id = [NSNumber numberWithLong:[[FBUser id] longLongValue]];
if (FB_user_id == nil) {
FB_user_id = owner_id;
NSLog(@"FBUser ID = %@", FB_user_id);
loggedInSession = [FBSession activeSession];
[[NSUserDefaults standardUserDefaults] setObject:[FBUser id] forKey:@"eventOwnerID"];
[self performSegueWithIdentifier:@"continue_to_app" sender:self];
}
}
}];
if ([self checkFacebookSession]) {
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.view setNeedsDisplay];
});
}
FBLoginView बटन के साथ दिखाई देता है "के साथ प्रवेश करें फेसबुक"। मैं लॉग इन कर सकता हूं और अनुमतियां स्वीकार कर सकता हूं, लेकिन loginViewShowingLoggedInUser ओवरराइड फ़ंक्शन को कभी भी कॉल नहीं किया जाता है।
- (BOOL) application:(UIApplication *) application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
NSLog (@"application openURL");
NSLog (@"URL = %@", url);
NSLog (@"Application = %@", sourceApplication);
// Call FBAppCall's ha
BOOL wasHandled = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
//[LoginUIViewController updateView];
return wasHandled;
}
इस कोड को कोई प्रभाव नहीं पड़ा और मार डाला कभी नहीं किया गया था:
किसी ने निम्नलिखित जोड़ने का सुझाव दिया।
मैं क्या गलत कर रहा हूं?
को मैं गंभीरता से दुनिया में केवल एक ही व्यक्ति इस भर में पता चला है कि है? – user3147421
मुझे वर्तमान में समस्या है जहां आईफोन पर 8.3 चल रहा है, ऐप प्रतिनिधि यूआरएल योजना कभी नहीं बुलाई जाती है। लेकिन एक आईपैड पर 8.1 चल रहा है, इसे कहा जाता है। (आवेदन: openURL: sourceApplication: एनोटेशन :)। तो एक आईफोन पर, FBLoginView कभी भी एफबी अनुप्रयोग पर रीडायरेक्ट नहीं करता है। यह तुरंत स्वचालित रूप से प्रमाणीकृत करता है, और एफबी प्रोफाइल पढ़ता है। तो ऐसा लगता है कि मुझे उस मामले में स्पष्ट रूप से ऑथ सत्र का अनुरोध करने की आवश्यकता है। सभी सिमुलेटर पर, हालांकि, openUrl: ऐपडिलेगेट से कॉल का आह्वान किया जाता है .... सुनिश्चित नहीं है कि डिवाइस/ओएस संस्करणों के बीच व्यवहार का यह अंतर क्यों है। – Alex