ios -/app/app_link_hosts 图形 API 在 iOS 中不适合我
<p><p>在发布之前,我尝试了这个链接 <a href="https://stackoverflow.com/questions/24156885/using-app-links-hosting-api-for-link-shared-on-facebook-from-ios-app" rel="noreferrer noopener nofollow">Using App Links Hosting API for link shared on Facebook from iOS app</a>
没有任何成功。这是我的代码</p>
<pre><code>// I have declared my FBSession object here in app delegate.
AppDelegate *appDelegate = (AppDelegate*)[ delegate];
//Create dict params
NSDictionary *paramsForAppLinksHost = [NSDictionary dictionaryWithObjectsAndKeys:
@"appName", @"name",
@"myScheme://", @"al:ios:url",
@"appStoreId", @"al:ios:app_store_id",
@"appName", @"al:ios:app_name",
@"{should_fallback:false}", @"web",
nil
];
//Call graph API
FBRequest *request = [ initWithSession:appDelegate.mpFacebookSession
graphPath:@"/app/app_link_hosts"
parameters: paramsForAppLinksHost
HTTPMethod:@"GET"];
FBRequestHandler handler =
^(FBRequestConnection *connection, id result, NSError *error)
{
// output the results of the request
;
};
;
;
</code></pre>
<p>结果:打印结果说明:
{
数据 = (
);
}</p>
<p>错误:无。 </p>
<p>我在这里做错了什么?对我来说,这个 Facebook 文档确实缺乏细节。发生这种情况是因为任何权限问题吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>首先我想说Facebook doc真的很烂,它从来没有真正详细说明过任何事情,在做了所有这些之后我才知道Mobile Safari不支持应用链接:( .
这意味着如果没有 Facebook 应用程序,这将不起作用</p>
<p>所以我们有两个选择。</p>
<ol>
<li><p>1.如果我们实现应用链接,这将不适用于没有 fb 应用的人。</p></li>
<li><p>如果我们使用 URL 并分享到 FB 并单击它重定向并使用服务器端的某些架构来启动您的应用程序,如果您安装了 Facebook 应用程序,这也不起作用,因为新的 FB 应用程序有自己的浏览器,似乎不支持使用 document.location() 进行重定向。同样在 iOS 8.0 中使用 document.location () 重定向(将使用模式)由于某种原因无法正常工作。所以基本上我被迫使用应用链接:( </p></li>
</ol>
<p>来到我的问题,这是由于参数不匹配但API调用没有说明它,我使用以下代码获取App链接ID。由于我的问题中的链接在那个答案中调用它不起作用,所以我这样使用。希望它能节省一些人的时间。</p>
<p>//获取应用 token ,是应用 token 不是用户 token </p>
<pre><code>> NSDictionary* infoDict = [ infoDictionary];
> NSString* pFaceBookAppID = ;
> NSString *pStr = [NSString
> stringWithFormat:@"https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=%@&client_secret={app_secret_key}",pFaceBookAppID];
> NSURL* pWebUrl = ; NSString *fullToken =
> [NSString stringWithContentsOfURL:pWebUrl
> encoding:NSUTF8StringEncoding error:nil]; NSArray *components =
> ; self.mpFBAppToken =
> ;
</code></pre>
<hr/>
<p>//现在可以这样调用获取app ID了,</p>
<pre><code> NSArray *pArray = @[@{@"url":{URL_SCHEMA},@"app_store_id":{app_store_id},@"app_name":{{app_name}}];
NSData *jsonData = ;
NSString *jsonString = [ initWithData:jsonData encoding:NSUTF8StringEncoding];
NSDictionary *pDict = @{@"should_fallback" :@"false"};
jsonData = ;
NSString *jsonWebString = [ initWithData:jsonData encoding:NSUTF8StringEncoding];
pRequestString = ;
NSURL* pWebUrl = ;
NSData *myRequestData = length:];
NSMutableURLRequest *request = [ initWithURL:pWebUrl];
;
;
;
mpConnection = [initWithRequest:request delegate:self] ;
</code></pre>
<p>//现在你必须实现连接委托(delegate)函数来获取结果,它将包含应用程序链接 ID,使用它来获取 URL,如下所示。
获取网址..</p>
<pre><code> NSDictionary *pParams = @{@"access_token":self.mpFBAppToken};
[FBRequestConnection startWithGraphPath:self.mpAPPLinkID
parameters:pParams
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
){
}];
</code></pre>
<p>//现在在 URL 中只需附加您想要作为查询字符串传递的参数,这样您就可以像这样从应用程序委托(delegate)的 openURL 方法轻松解析它...</p>
<pre><code>>[FBAppCall handleOpenURL:url
> sourceApplication:sourceApplication
> fallbackHandler:^(FBAppCall *call)
> {
> // Retrieve the link associated with the post
> NSURL *targetURL = [ targetURL];
> if([length] > 0)
> {
//Parse Query string by some method;
> NSMutableDictionary *pDict = [initWithDictionary:[self
> parseURLParams:]]; } }];
</code></pre>
<p>希望这对某人有所帮助。</p></p>
<p style="font-size: 20px;">关于ios -/app/app_link_hosts 图形 API 在 iOS 中不适合我,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/28827537/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/28827537/
</a>
</p>
页:
[1]