首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel webapp使用Facebook SDK从iOS登录

Laravel webapp使用Facebook SDK从iOS登录
EN

Stack Overflow用户
提问于 2015-02-16 22:48:55
回答 2查看 998关注 0票数 1

我有一个和Laravel一起工作的网络应用。我有一些用户注册在我的网络应用程序中。不想创建帐户的用户可以使用Facebook/Google+登录。

为了建立Facebook和Google+的连接,我使用了一个oAuth2连接:oauth-4-laravel

在iOS应用程序上,用户可以使用用户名和密码登录,但他们也可以使用FB/G+ SDK登录Facebook/Google+。

我的问题是,如何从iOS登录通过Facebook/Google+连接的webapp用户。

artdarek/oauth-4-laravel需要社交网络提供的“代码”,我不知道如何在iOS上获得它。

以下是想要通过web浏览器连接到web应用程序的用户的代码:

代码语言:javascript
运行
复制
 public function loginWithFacebook() {

// get data from input
    $code = Input::get( 'code' );

    // get fb service
    $fb = OAuth::consumer( 'Facebook' );

    // check if code is valid

    // if code is provided get user data and sign in
    if ( !empty( $code ) ) {

        // This was a callback request from facebook, get the token
        $token = $fb->requestAccessToken( $code );

        // Send a request with it
        $result = json_decode( $fb->request( '/me' ), true );

       // $message = 'Your unique facebook user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
        //echo $message. "<br/>";

        //Var_dump
        //display whole array().
       // dd($result);
        if (User::where('fb_id','=', $result['id'])->count() == 0) {
             $user = new User;
            $user->firstname = $result['first_name'];
            $user->lastname = $result['last_name'];
            $user->username = $result['email'];
            $user->email = $result['email'];
            $user->fb_id = $result['id'];
            $user->yearofbirth = substr($result['birthday'],6,9);
            $user->fk_role=3;

            if ($result['gender'] == 'male') {
                $user->sex = 1;
            }
            else{
                $user->sex = 0;
            }


            $user->save();

        }
        else{
            $user = User::where('fb_id','=', $result['id'])->first();

        }

    Auth::login($user);

    Userslog::log('desktop_facebook_login');

    return Redirect::to('/')->with('message', 'Logged in with Facebook');

    }
    // if not ask for permission first
    else {
        // get fb authorization
        $url = $fb->getAuthorizationUri();

        // return to facebook login url
         return Redirect::to( (string)$url );
    }

}
EN

回答 2

Stack Overflow用户

发布于 2015-03-02 16:53:33

我终于在github上找到了oauth-4-laravel问题的解决方案。

我只需要使用iOS AccessToken,并使用此令牌将用户连接到webapp应用程序。

这里的代码是使用令牌的代码;)

代码语言:javascript
运行
复制
use OAuth\OAuth2\Token\StdOAuth2Token;

$token_interface = new StdOAuth2Token(Input::get( 'token' ));       
$network = OAuth::consumer( 'Facebook' );
$network->getStorage()->storeAccessToken('Facebook', $token_interface);
$result = json_decode( $network->request( '/me' ), true );
$fb_id = $result['id'];

要恢复,最好的方法是;在iOS上用Facebook/Google+登录,

当登录成功完成时,获取AccessToken并发送到webapp.And,然后webapp使用you token再次将用户登录到Facebook/Google+,最后,用户经过验证,您可以将其登录到laravel webapp。

祝您今天愉快。

票数 1
EN

Stack Overflow用户

发布于 2015-05-28 19:57:25

我在这里也处于同样的情况。

使用您提供的解决方案,您如何防止其他应用程序发送自己的AccessToken并访问您的Laravel应用程序?

我假设您通过POST请求将令牌从iOS应用程序发送到Laravel应用程序的某个端点,因此任何了解此端点的开发人员都可以假装登录到您的移动应用程序,不是吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28544020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档