1

「クライアント主導のログイン操作」を使用して、azure-mobile サービス ( http://msdn.microsoft.com/en-us/library/windowsazure/jj710106.aspx )で Facebook アカウントを持つユーザーを承認しようとしています。

  • プロジェクト用に iOS Facebook SDK をダウンロードして構成しました。
  • ユーザーログインのコードは次のとおりです。

    NSArray* permissions = @[@"email, user_about_me, basic_info"];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession* session, FBSessionState status, NSError* error) {
         if (!error) {
              [_msClient loginWithProvider:provider
                                     token:@{@"access_token" : [[session accessTokenData] accessToken]}
                                completion:^(MSUser* user, NSError* error) {
                   NSLog(@"%@", error); 
              }];
         }
    }];
    

  • このコードはエラーを返します:

    Error Domain=com.Microsoft.WindowsAzureMobileServices.ErrorDomain Code=-1302 "Error: The Facebook Graph API access token authorization request failed with HTTP status code 400" UserInfo=0x1768ba80 {NSLocalizedDescription=Error: The Facebook Graph API access token authorization request failed with HTTP status code 400}
    

    確認できます、それは

    NSString* access_token = [[session accessTokenData] accessToken];
    

    https://developers.facebook.com/tools/explorer/?method=GET&path=meでエラーなく動作するため、有効なアクセス トークンを返します。

    私は何を間違っていますか?

  • 4

    2 に答える 2

    2

    同様の問題があり、Azure Mobile Service から返されたエラーが最も役に立たないことを確認できます。私は最終的に、ここでボンネットの下で何が起こっているかを読みました: https://developers.facebook.com/docs/facebook-login/access-tokens/#extending

    次に、GET リクエストを手動で呼び出して、有効期間の長いトークンを取得しようとしました ( https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {app-id}&client_secret={app-secret}&fb_exchange_token={ short-lived-token}) そして、ここでようやく本当のエラー メッセージが表示されました。私の場合、「アプリがデスクトップアプリとして構成されているため、リクエストは無効です」であることが判明し、Facebookアプリの構成でスイッチを切り替えるだけで修正されました。

    あなたの場合、別のエラー メッセージかもしれませんが、このアプローチを採用して、どこに行くかを確認することをお勧めします。

    于 2014-01-02T16:29:34.057 に答える