Facebook Android SDK

来源:互联网 发布:软件 地图周围距离 编辑:程序博客网 时间:2024/06/05 13:28
请教:当我试SDK中那个example那个例子时,webview页面显示you do not have permission to open this page. fbconnect://success/#access_token=1394.....
是什么原因呢?
还有:我的Application Secret在example这个自带的demo中好像没用到啊?
你上面跑成功的是他那个stream的例子么?
原文地址:Facebook Android SDK作者:1691349832

作用:

 

一.官方描述:

 

1.用户授权,允许用户登陆到Facebook(图1.2)并授予APP访问权限(图3),获取验证串(access token)

 

2.访问Facebook REST API(图4).

 

3.显示Facebook的对话框:可以显示多种Facebook的内嵌网页式的对话框(现阶段支持登陆和留言),开发者只需很少量代码便可以在客户端中集成这些功能(图5).

 

 

可参考http://github.com/facebook/facebook-android-sdk 和 截图

 

二.截图:


[转载]Facebook <wbr>Android <wbr>SDK
图1.Facebook connect button 

[转载]Facebook <wbr>Android <wbr>SDK              

图2.登陆页面

[转载]Facebook <wbr>Android <wbr>SDK     

图3.请求授权                                           

[转载]Facebook <wbr>Android <wbr>SDK

图4.访问Facebook REST API (news_feed)

 

[转载]Facebook <wbr>Android <wbr>SDK

图5.留言功能,暂不可用,从错误信息来看,是因为appid没有加入白名单.

 

实现机制

 

     

通过在客户端内嵌浏览器,请求facebook的登陆页面,点击登陆后,会跳转到一个登陆成功的url,由内嵌浏览器捕获redirect url中携带的参数来获取access_token,之后客户端可以使用此access_token来访问facebook rest api接口.

 

具体过程如下:

 

1.请求登陆页面:

 

https://graph.facebook.com/oauth/authorize?display=touch&scope=publish_stream,read_stream,offline_access&client_id=126138970748545&type=user_agent&redirect_uri=fbconnect://success

 

2.登陆成功:

 

fbconnect://success/#access_token=126138970748545%7C42d62af5d3b387ff790c4e40-1353746972%7C5tw2F26nsswkD0hPWdgEvBDC8Lo.

 

3.通过复写WebViewClient的shouldOverrideUrlLoading方法,在监测到以schema为fbconnect://开头的url后,会解析url中的参数,获取access_token.

 

4.使用access_token来访问REST_API:

 

请求:

https://graph.facebook.com/me?access_token=126138970748545%7C42d62af5d3b387ff790c4e40-1353746972%7C5tw2F26nsswkD0hPWdgEvBDC8Lo.&format=json

 

返回:

{"id":"1353746972","name":"u66f9u8d6b","first_name":"u8d6b","last_name":"u66f9","link":"http://www.facebook.com/profile.php?id=1353746972","gender":"male","timezone":8,"verified":true,"updated_time":"2009-04-27T13:02:05+0000"}

 

 

另:

 发现可通过getWebView().loadUrl("javascript:" + js);来在webclient中执行js代码.