[SNS]Facebook

http://developers.facebook.com/docs/concepts/login

Edit

安全

Facebook登录使用的是OAuth2.0的认证和授权。登录对话框在你、你的用户
和他们的信息之间创建了一条可信任的链接。

Edit

登录对话框

http://developers.facebook.com/docs/concepts/login/permissions-login-dialog

Facebook的登录有几种安全的措施来保护人们的信息。让人们能够控制他们
的分享,并且让开发者能够安全的请求获得这一信息。

Edit

权限

当用户登录到一个应用程序,该应用程序获取他们的基本信息。请求更多的信息,
或执行其他操作时(例如:发布一个时间表或删除一个post),你需要请求附加权限。

这些分为以下几组:
User and Friend Permissions :访问各种要素的用户的时间表,例如他们的生日、他们参加或感兴趣的事情。
Extended Permissions :访问大多数发表权限和更敏感信息像用户的新闻摘要(news feed)。
Open Graph Permissions :访问Open Graph APIs,包括发表行动和全球行动。
Page Permissions :执行代表用户管理所有的Facebook页面。

发布权限:
当用户授予应用程序publish_actions权限,应用程序可以代表用户发布Open Graph stories,
此外通过Graph API应用程序可以:
1.发表(Post)用户的信息摘要(feed)
2.上传照片和视频-包括创建一个相册
3.给照片和视频加标签
4.添加/评论故事

publish_stream权限是publish_actions的一个超集,许可这些额外的功能:
1.发表(Posting)一个朋友的信息摘要(feed)
2.发表(Posting)问题
3.创建notes
4.发表(Posting)能够满足的事件或组

publish_stream是一个扩展权限(Extended Permission),应该只在特殊需要时被请求。请求这些发布权限会导致publish_actions被
忽视并且只有publish_stream被请求。

Edit

Access Tokens 和 Types

http://developers.facebook.com/docs/concepts/login/access-tokens-and-types/

Edit

Access Tokens

一个access token是一组提供临时、安全的访问FacebookAPI的随机字符串。
一个token标识一个用户、App 或 Page session并且提供关于授权权限的信息。他们也包括关于token到期和app生成
token的信息。由于隐私检查,大多数的在Facebook的API calls需要签署一个access token。所有的access token需要
从OAuth 2.0的认证和授权程序中生成。

Edit

Types

User Access
User access tokens是一个标准型的API calls;在用户授权给app时这些在登录流程中产生。
你可以使用这个tokens作为用户代表执行API calls,包括读、发表和删除,这取决于你的app所拥有的权限。例如你可
以通过User access tokens检索用户朋友列表和发布新照片的时间表。
这些tokens有一段默认的很短的时期,可是你可以替换它们成为长期有效的tokens,这些tokens对于每一个用户和app
都是唯一的。

Page Access
Page access tokens 被使用于管理Facebook页面。要生成Page access tokens,做为Page admin的用户必须授予一个
叫做manage_pages的扩展权限。
你可以使用这类tokens作为页面代表使用API calls(例如:阅读、发表和删除)。举个例子,你可以发布一个状态来
更新页面(而不是在用户的时间表上)或读取页面数据(Insights data)。
Page Access对于每个页面、管理者和app都是唯一的。

App Access
App access tokens可以被Facebook Apps生成,生成不同于其它tokens登录流程的App access tokens,这个可以再code上
实现。
这类token对于修改app设置、创建和管理test用户或读取App的Insights data十分有用。你可以使用app tokens来发布或
删除给你app权限的用户代表的内容。例如:如果一个用户获得你的app publish_stream权限,你的app可以使用一个app
access token发布一个状态更新他们的代表。
App tokens不会过期除非App的秘密被重置。App access tokens对于每一个app都是唯一的。

Edit

登录架构

http://developers.facebook.com/docs/concepts/login/login-architecture/

Edit

Native Device Login

IOS和Android SDKs包括step-by-step docs帮助你整合Facebook Login进入移动apps。
客户端的登录流程也可以在本地的apps上工作(假设WebView可用),本地的SDK使得过程
没有漏洞。

Edit

作为App登录

http://developers.facebook.com/docs/howtos/login/login-as-app/

Edit

获得一个App Access Token

Step 1.执行一个HTTP GET:

https://graph.facebook.com/oauth/access_token?
    client_id=YOUR_APP_ID
   &client_secret=YOUR_APP_SECRET
   &grant_type=client_credentials

Step 2.向API提出请求:
现在你的app获得一个App Access Token,它可以作为app发出请求,而不是用户,这是一个简单的关于
app自身的token检索信息的测试,可以写到Step 1代码的后面:

    $graph_url = "https://graph.facebook.com/app?access_token=" 
        . $params['access_token'];

    $app_details = json_decode(file_get_contents($graph_url), true);

    echo("<br />Here is a link to the app " . $app_details['link']);

这将会产生一个输出像这样:
This app's access token is: 12345678910|5xCtZJOK-5xsaaJ99ABCdemlKM
Here is a link to the app http://www.facebook.com/apps/application.php?id=12345678910
Edit

Facebook Android SDK的使用方法

请参考:http://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
Facebook Android SDK下载:http://developers.facebook.com/android/

Edit

Facebook Android API的使用

http://developers.facebook.com/docs/reference/android/3.0/

Edit

Session

http://developers.facebook.com/docs/reference/android/3.0/Session

Session用来验证用户和管理Facebook用户的session。
Sessions必须在他们发出请求前被打开,当一个Session被创建,它将试图从一个TokenCache中初始化本身,
关闭Session可以选择清除缓存。Session的周期使用SessionState 来表明它的状态。
Sessions的实例化提供状态的改变通过回调接口StatusCallback 来通知。

方法:
boolean isOpened()

返回一个波尔值判断Session是否被打开。
boolean isClosed()
返回一个波尔值判断Session是否被关闭。

Edit

FacebookActivity

http://developers.facebook.com/docs/reference/android/3.0/FacebookActivity

一个活动的基本实现,使用一个Session来实现单点登录(SSO)
许多Activity的生命周期方法被重写到这个class里来管理session信息。如果你重写
Activity的生命周期方法一定要调用合适的super 方法。

方法:
SessionState getSessionState()

获得当前的session 状态或没有session被创建的null值。
void openSession()
打开一个新的session。这个方法将从相关的meta-data值和空列表的权限中使用应用程序id。如果这个Activity中不存在
session,或当前的session已经被关闭,将会创建一个新的Session对象并将它设为活动session。如果在这个Activity中
存在session但是没有打开,他将尝试打开这个session。如果这个session已经被打开,则什么都不做。

Edit

Request

http://developers.facebook.com/docs/reference/android/3.0/Request

一个简单的请求通过Graph APIREST API 发送到Facebook平台。Request class提供有关序列化和
反序列化的请求和响应,这样的功能被称作分批调用和异步调用

方法:
static Request newMeRequest(Session session, Request.GraphUserCallback callback)

创建一个新的Request配置来获得用户自己的简介。
参数:
session
Session使用或为null,如果不为空,session必须是打开的状态。
callback 当请求完成处理成功或错误条件时,callback被调用。
返回:
准备执行的一个Request。
public static Request newMyFriendsRequest(Session session, Request.GraphUserListCallback callback)
创建一个新的Request配置来获得用户好友的列表。
参数:
session
Session使用或为null,如果不为空,session必须是打开的状态。
callback 当请求完成处理成功或错误条件时,callback被调用。
返回:
准备执行的一个Request。
RequestAsyncTask executeAsync()
执行此请求并返回响应。这只能从UI线程中调用。
返回:
正在执行请求的一个RequestAsyncTask。

Edit

Request.GraphUserCallback

http://developers.facebook.com/docs/reference/android/3.0/Request.GraphUserCallback

当newMeRequest的请求完成处理成功或错误条件时,这个特殊的接口可以被通知。

方法:
void onCompleted(GraphUser user, Response response)

当请求完成时,这个方法被调用。
参数:
user
GraphObject代表返回用户或null。
response 请求的响应,如果请求没有成功则包括错误信息。

Edit

Request.GraphUserListCallback

http://developers.facebook.com/docs/reference/android/3.0/Request.GraphUserListCallback

当newMyFriendsRequest的请求完成处理成功或错误条件时,这个特殊的接口可以被通知。

方法:
void public void onCompleted(List users, Response response)

当请求完成时,这个方法被调用。
参数:
users
GraphObjects的列表代表返回的好友或null。
response 请求的响应,如果请求没有成功则包括错误信息。

Edit

GraphUser

用Graph API提供一个强类型用户代表作为定义,请注意,这个接口是打算用于GraphObjectWrapper,而
不是直接使用。

方法:
String getId()

返回用户的ID
String getName()
返回用户的姓名

还有一些其他的返回值获取其他信息,这里就不一一介绍。请参考:http://developers.facebook.com/docs/reference/android/3.0/GraphUser

Edit

示例

获取好友的ID

Request request = Request.newMyFriendsRequest(session,
                new GraphUserListCallback() {
                    public void onCompleted(List<GraphUser> users,
                            Response response) {
                                for (GraphUser user : users) {
                                    Log.i("FriendID", user.getId());
                                }
                        }
                });
        request.executeAsync();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值