0

ハイホー

iOS 6 用の新しい Facebook SDK 3.2 に大きな問題があります (テストには iPhone シミュレーターを使用しています)。ハウツーで説明されているとおりに Facebook ログインを実装しました。唯一の違いは、アプリ デリゲート内に実装しなかったことです。Facebook スタッフを 1 つの別個の mm ファイルに実装しました (ただし、アプリ デリゲート内のコードもテストしました -> 同じ問題です!)。

ログインしようとすると、画面の中央に UIView (おそらく UIWebView) がポップアップ表示され、アカウント資格情報を入力できます。次に、権限確認画面が表示されます。[OK] ボタンをクリックすると、次のエラーが表示されます: 「操作を完了できませんでした。(com.facebook.sdk エラー 2.)」 ErrorLoginNotCancelled}

私はすでに古いfacebook-sdk v2を経験しています。統合するのに問題はありません。しかし、新しいものとiOS 6では、実行できません:-(

UIApplicationDelegate のメソッド openURL が呼び出されていないことが、1 つの重要な問題である可能性があると思います。AppID を info.plist に挿入し、URL タイプも追加しました。次のスニペットのようになります。

<key>CFBundleURLTypes</key>
<array>
<dict>
  <key>CFBundleURLSchemes</key>
    <array>
      <string>fb111111111111111</string>
    </array>
</dict>
</array>
<key>FacebookAppID</key>
<string>111111111111111</string>

また、wireshark で URL を分析しました。

https://www.facebook.com/login.php?app_id=11111111111111&sdk=ios&skip_api_login=1&cancel=fb11111111111111%3A%2F%2Fauthorize%2F%3Ferror_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DBuser%2Buser%2Bdenied%2Buser%2DBuser%2Buser%2D 2Brequest.&fbconnect=1&next=https%3A%2F%2Fm.facebook.com%2Fdialog%2Fpermissions.request%3F_path%3Dpermissions.request%26app_id%3D111111111111111%26client_id%3D111111111111111%26redirect_uri%3Dfb111111111111111%253A%252F%252Fauthorize%26sdk% 3Dios%26display%3Dtouch%26type%3Duser_agent%26fbconnect%3D1%26sso%3Diphone-safari%26from_login%3D1&rcount=1&_rdr

デコードされた場合の同じ URL: https://www.facebook.com/login.php?app_id=111111111111111&sdk=ios&skip_api_login=1&cancel=fb111111111111111://authorize/?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request. &fbconnect = 1&next = https://m.facebook.com/dialog/permissions.request?_path = permissions.request&app_id = 111111111111&client_id = 11111111111&redirect_uri = fb11111111111111111111111111111111111111% 1&rcount=1&_rdr

また、関連するすべての場所 (info.plist/url/dev-site: Bundle ID) で app-id が等しいことも再確認しました。

重要な情報かどうかはわかりませんが、独自の 3D エンジンを使用する 3D ゲームであるため、アプリでは xib ファイルを使用しません。また、提供される画面の向きは横向きのみです。Xcode バージョン 4.5.2 (4G2008a) を使用しています。

何か案は?

3 つの追加の質問 (より多くの情報を得るのに役立つかもしれません):

  1. 何がうまくいかないかについての詳細情報を入手するにはどうすればよいですか? 「com.facebook.sdk エラー 2」はあまり役に立ちません :-/

  2. UIApplicationDelegate からの openURL メソッドの自動リダイレクト呼び出しをテストする簡単な方法はありますか?

  3. ビューの代わりに safari-browser でログインするように SDK を強制する方法はありますか?

thx事前に

マーティン

4

1 に答える 1

1

私は解決策を見つけました:メソッド「application:didFinishLaunchingWithOptions」内でメソッド「canOpenURL」を次のように呼び出す必要があります:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  ...
  [[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"fb111111111111111"]];
  ...
  return YES; //or NO;  doesn't matter
}

その効果は、sdk が愚かな WebView の代わりにサファリ ブラウザでログインしようとすることです :-)

_

ヒント:

info.plist ファイルから URL スキームを直接読み取ることができます。

NSString urlScheme = [[[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLTypes"] objectAtIndex:0] objectForKey:@"CFBundleURLSchemes" objectAtIndex:0];
于 2013-02-27T13:31:38.133 に答える