0

iPhone アプリに facebook-ios-sdk を使用し、ユーザーがボタンを押すと認証画面を起動します。しかし、私はいつも別の認証画面を取得します。詳細設定で「拡張認証ダイアログ」を有効にしました...

ここに画像の説明を入力

他のアプリはこれを使用します:

ここに画像の説明を入力

facebook = [[Facebook alloc] initWithAppId:@"167080433419201" andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
   facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
   facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

if (![facebook isSessionValid]) {
   NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_about_me",nil];
   [facebook authorize:permissions];
}
4

3 に答える 3

0

Facebook の認証時に設定した権限を確認してください。

これはほんの一例です

NSArray *permissions = [[NSArray alloc] initWithObjects:
            @"user_likes", 
            @"read_stream",
            nil];
        [facebook authorize:permissions];

ここでより多くの権限タイプを見つけることができます: https://developers.facebook.com/docs/authentication/permissions/

于 2012-05-07T04:38:49.007 に答える
0

OAuth では、アプリのプライバシー リストにアクセス許可がない場合、付与されたアクセス許可を取得するためにユーザーがログインする必要があります。ログインしてアプリのアクセス許可要求を許可すると、リダイレクトされた URL からaccess_tokenを取得できます。

したがって、最初にログインする必要があり、ios テストアプリが facebook アプリのプライバシー リストに既に存在している可能性があります。

2 番目の画面はすでにログインしていましたが、最初の画面はログインしていませんでした。access_token と有効期限を保存するには、FBSessionDelegate を採用する必要があります。

- (void)fbDidLogin {
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

}
于 2012-05-07T01:37:56.703 に答える
0

解決策を見つけたので、さまざまな権限を試しました。しかし、認証画面が正しい画面に変わるまでに時間がかかります...

于 2012-05-08T15:41:18.067 に答える