【问题标题】:How to have a paid and free version of iOS app share FB App ID?如何让付费和免费版本的 iOS 应用共享 FB App ID?
【发布时间】:2011-09-09 23:33:39
【问题描述】:

我有同一个 iPhone 应用的免费和付费版本。我希望他们共享一个 Facebook 应用 ID,因为它们本质上是同一个应用。我想我可以通过使用 Facebook 类中的这个方法来实现这一点。

- (void)authorize:(NSArray *)permissions localAppId:(NSString *)localAppId

但是,其中一个应用程序(在我的情况下是免费版本)的登录总是失败,原因似乎是在 Web 界面中创建的 Facebook 应用程序要求提供 App Bundle ID 和 App Store ID。显然,我的应用程序的免费版本和付费版本不能具有相同的 bundle id 或 app id,那么我该如何进行这项工作呢?

Facebook.m 中的文档建议可以使用我上面提到的授权方法:

/*
 * ...
 * @param localAppId
 *            This is useful if your have multiple iOS applications that
 *            share a single Facebook application id (for example, if you
 *            have a free and a paid version on the same app) and you want
 *            to use SSO with both apps. 
 * ...
 */

谢谢。 - 亚历克斯

【问题讨论】:

    标签: iphone ios facebook fbconnect


    【解决方案1】:

    你可以让它工作。每个应用程序必须有不同的 url 方案(因为这就是 Facebook 重定向回您的应用程序的方式)。

    您必须支持的示例 url 方案: (您的 Facebook 应用程序 ID:“fb123456789”)

    不设置 localAppId: "fb123456789" (localAppId = nil)

    免费应用网址方案: "fb123456789lite" (localAppId = "lite")

    付费应用网址方案: "fb123456789pro" (localAppId = "pro")

    来自cmets:

    localAppId 是附加到 用于 SSO 的基本 URL 方案。例如,如果您的 Facebook ID 是 “350685531728”并将 localAppId 设置为“abcd”,Facebook 应用程序将 期望您的应用程序绑定到以下 URL 方案: “fb350685531728abcd”。

    【讨论】:

    • 嗨丹尼尔,我有你所描述的,但我不认为这是问题所在。在此 URL 的 Web 端:developers.facebook.com/apps/FBID/summary 在 Mobile Native 部分下有一个 Bundle ID 和 App Store ID 字段。 Bundle ID 旁边的评论说“出于安全原因,我们在回调您的应用程序时会检查 bundle id”。但 Facebook.m 的 API 中的 cmets 似乎与此相矛盾。
    • 您无需在 Web 界面中添加任何内容。当你要授权facebook时,调用[_facebook authorize:_permissions localAppId:@"lite"];或 [_facebook 授权:_permissions localAppId:@"pro"];
    • 我真的可以把所有的东西都留空吗?我会试试的。我应该将其更改为网络应用而不是原生移动应用吗?
    • 好吧,我肯定会在去商店之前填写所有内容,但这些都不是功能所必需的。一切都对我有用,无需填写任何内容。您只需要让您的 iOS 应用程序接受正确的 URL 方案并调用授权:。另外,如果你没有看到我上面引用的部分,你应该检查一下 GitHub 上是否有更新的 FB SDK。可能还有一个免责声明,仅适用于 Facebook v3.4.1+ iOS 应用程序。
    • 谢谢丹尼尔,那行得通。对于其他正在看这个的人。关键是当您在 Facebook 创建应用程序页面上填写应用程序信息时,将您的应用程序类型标记为“Web”而不是“Native/Desktop”。当您是本机/桌面应用程序时,它需要 Bundle ID 并在回调中检查它。如果您是网络应用程序,它会忽略它。我有点担心 FB 将来可能会“修复”这个问题,它会停止工作,但当我遇到它时,我会越过那座桥。
    猜你喜欢
    • 2015-09-09
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多