Son zamanlarda Facebook SDK 3.1 kullanmaya başladık ve openActiveSessionWithReadPermissions
kullanarak oturum açmada bazı sorunlarla karşılaşıyorum.openActiveSessionWithReadPermissions otomatik olarak oturum açmıyor
Aslında, günlük olarak çalışır, önbelleğe alınmış bir belirteç varsa, Facebook kullanıcı arabirimi sunmadan oturum açar ve eğer değilse, kullanıcı arabirimini sunar.
reauthorizeWithPublishPermissions
numaralı telefonu aradıktan sonra sorun oluşuyor. reauthorizeWithPublishPermissions
numaralı telefonu arayarak uygulamayı kapatıp yeniden açarak openActiveSessionWithReadPermissions
numaralı telefonu arayın, Facebook kullanıcı arayüzünü sunar ve kullanıcının önbelleğe alınmış bir belirteç olmasına rağmen "evet, okuma izinleri ile tamam" seçeneğini belirtmesini ister.
reauthorizeWithPublishPermissions
numaralı telefonu arayarak yalnızca Facebook kullanıcı arayüzünü hatalı olarak gösterir, aksi halde her şey yolunda çalışır. okuma kodu için açık
:
[FBSession openActiveSessionWithReadPermissions:readpermissions allowLoginUI:YES
completionHandler:^(FBSession *aSession, FBSessionState status, NSError *error) {
[self sessionStateChanged:[FBSession activeSession] state:status error:error];
if (status != FBSessionStateOpenTokenExtended) {
// and here we make sure to update our UX according to the new session state
FBRequest *me = [[FBRequest alloc] initWithSession:aSession
graphPath:@"me"];
[me startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *aUser,
NSError *error) {
self.user = aUser;
aCompletionBlock(aSession, status, error);
}];
}
}];
sessionStateChanged fonksiyonu: Önceden her şey için
- (void)doPublishAction:(void(^)(FBSession *aSession, NSError *error))aPublishAction {
if ([FBSession.activeSession.permissions
indexOfObject:@"publish_actions"] == NSNotFound) {
NSArray *writepermissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
@"publish_actions",
nil];
[[FBSession activeSession]reauthorizeWithPublishPermissions:writepermissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *aSession, NSError *error){
if (error) {
NSLog(@"Error on public permissions: %@", error);
}
else {
aPublishAction(aSession, error);
}
}];
}
else {
// If permissions present, publish the story
aPublishAction(FBSession.activeSession, nil);
}
}
Tesekkür Edenler:
- (void)sessionStateChanged:(FBSession *)aSession state:(FBSessionState)state error:(NSError *)error {
if (aSession.isOpen) {
// Initiate a Facebook instance and properties
if (nil == self.facebook || state == FBSessionStateOpenTokenExtended) {
self.facebook = [[Facebook alloc]
initWithAppId:FBSession.activeSession.appID
andDelegate:nil];
// Store the Facebook session information
self.facebook.accessToken = FBSession.activeSession.accessToken;
self.facebook.expirationDate = FBSession.activeSession.expirationDate;
}
} else {
// Clear out the Facebook instance
if (state == FBSessionStateClosedLoginFailed) {
[FBSession.activeSession closeAndClearTokenInformation];
}
self.facebook = nil;
}
}
test için boş aPublishAction ile, çağrıyı Yayınla , Her türlü yardım için minnettar olurum!
Bence publish_actions, ihtiyacınız olan her şeydir. Sanırım şimdi yayınları akıtıyor. – SAHM
Bunun için bir çözüm buldunuz mu? Tam olarak aynı problemi yaşıyorum. – Casey
hiçbir zaman çözüm bulunamadı, yayınlama izinleri almayı durdurduk, bu yüzden bir çözüm bulmamız gerekmiyordu. –