プロジェクトの Facebook 統合を開始しましたが、問題が発生しました。後で情報を参照できるように、ログインしているユーザーをローカル オブジェクトとして保存しようとしていますが、情報を保持できないようです。
ユーザーデータを取得するための私の関数は次のとおりです。
if(_session.isOpen)
{
[FBSession openActiveSessionWithReadPermissions:nil
allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error)
{
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error)
{
if(!error)
{
NSLog(@"Username: %@",user.name);
[_user initWithDictionary:user];
NSLog(@"Username: %@",[_user objectForKey:@"name"]);
}
else
{
NSLog(@"Couldn't get user details!");
}
}];
}];
}//endif
この場合、NLog は「ユーザー名: (null)」を提供します。
私は ObjC と Facebook の両方にかなり慣れていないので、何が間違っているのかわかりません。また、メンバー変数を作成しようとしました:
@property (strong, nonatomic) NSDictionary<FBGraphUser> *loggedInUser;
以前は、ユーザーを保存するための私のコードは
if(!error)
{
NSLog(@"Username: %@",user.name);
_user = user;
NSLog(@"Username: %@", _user.name);
}
else
{
NSLog(@"Couldn't get user details!");
}
これらはどちらも機能しなかったため (2 番目の NSLog が正しい変数を提供する限り、2 番目は機能しましたが、後でこの関数の外でアクセスしようとするとクラッシュが発生しました)、情報を正しく保存していないとしか思えません。
誰かが私が間違っていることについていくつかの指針を教えてもらえますか?