অ্যাক্সেস টোকেন ব্যবহার করে কীভাবে ফেসবুক ব্যবহারকারী আইডি পাবেন


89

আমার একটি ফেসবুক ডেস্কটপ অ্যাপ্লিকেশন রয়েছে এবং গ্রাফ এপিআই ব্যবহার করছি । আমি অ্যাক্সেস টোকেন পেতে সক্ষম হয়েছি, তবে এটি শেষ হওয়ার পরে - ব্যবহারকারীর আইডি কীভাবে পাবেন তা আমি জানি না।

আমার প্রবাহ এই রকম:

  1. আমি ব্যবহারকারীকে সমস্ত প্রয়োজনীয় বর্ধিত অনুমতি দিয়ে https://graph.facebook.com/oauth/authorize এ প্রেরণ করি ।

  2. আমার পুনঃনির্দেশ পৃষ্ঠায় আমি ফেসবুক থেকে কোড পাই।

  3. তারপরে আমি আমার এপিআই কী দিয়ে গ্রাফ.ফেসবুক / উথ / অ্যাক্সেস_ টোকেনের HTTP অনুরোধটি সম্পাদন করি এবং আমি প্রতিক্রিয়াতে অ্যাক্সেস টোকনটি পাই।

সেদিক থেকে আমি ব্যবহারকারীর আইডি পেতে পারি না।

এই সমস্যা কিভাবে সমাধান করা যেতে পারে?

উত্তর:


153

আপনি যদি বর্তমান ব্যবহারকারী আইডি পেতে গ্রাফ এপিআই ব্যবহার করতে চান তবে কেবল একটি অনুরোধ প্রেরণ করুন:

https://graph.facebook.com/me?access_token=...

4
আমি উপরের সঠিক কলটি চেষ্টা করেছিলাম: কেবলমাত্র ফিরে এসেছে: success "সাফল্য": সত্য}
পল কেনজোরা

4
এটি আর আইডি ফেরায় না। ব্যবহার:https://graph.facebook.com/me?fields=id&access_token=xxxxxx
এম

4
'অ্যাক্সেস_ টোকেন' কী? আমি পৃষ্ঠা অ্যাক্সেস টোকেন এবং ব্যবহারকারীর অ্যাক্সেস টোকেন ব্যবহার করার চেষ্টা করেছি। আমি এটি ব্যবহার করে 'অবৈধ টোকেন' প্রতিক্রিয়া পেয়েছি।
পিঁপড়া

34

সবচেয়ে সহজ উপায়

https://graph.facebook.com/me?fields=id&access_token="xxxxx"

তারপরে আপনি জসন প্রতিক্রিয়া পাবেন যা কেবলমাত্র ইউজারিড।


4
{ "ত্রুটি": { "বার্তা": "(# 100) অজানা ক্ষেত্র: আইডি।", "টাইপ": "OAuthException", "কোড": 100}}
নিকোলাই Kuznetsov

4
@NikolayKuznetsov: দুঃখিত মানুষ, পরিবর্তে Overlook মধ্যে আইডি আমি লিখেছেন আইডি , আমি এখন সম্পাদিত, আবার চেষ্টা করুন
pashaplus

4
কোনও সমস্যা নেই, আমি ইতিমধ্যে এটি চেষ্টা করেছি, তাই আমি আমার আগের মন্তব্যটি পোস্ট করি।
নিকোলে কুজনেটসভ

4
আমি নিম্নলিখিত ত্রুটিটি পেয়েছি আমার অ্যাক্সেস টোকেন সক্রিয়। error "ত্রুটি": message "বার্তা": "বর্তমান ব্যবহারকারীর সম্পর্কে তথ্য জিজ্ঞাসা করার জন্য একটি সক্রিয় অ্যাক্সেস টোকেন অবশ্যই ব্যবহার করা উচিত" "," টাইপ ":" OAuthException "," কোড ": 2500," fbtrace_id ":" HA0UNBRymfa "} }
অজিত গোয়েল

অ্যাক্সেস টোকেন কী এবং এটি থেকে কোথায় পাবেন
প্রধানমন্ত্রী

10

ফেসবুক অ্যাকসেস টোকেনটিও দেখতে একই রকম "1249203702 | 2.h1MTNeLqcLqw __। 86400.129394400-605430316 | -WE1iH_CV-AFTgyhDPc"

আপনি | ব্যবহার করে যদি মাঝের অংশটি উত্তোলন করেন বিভক্ত আপনি পেতে

2.h1MTNeLqcLqw __। 86400.129394400-605430316

তারপরে আবার বিভক্ত -

শেষ অংশ 605430316 ব্যবহারকারী আইডি।

অ্যাক্সেস টোকেন থেকে ব্যবহারকারী আইডিটি বের করার জন্য এখানে সি # কোডটি দেওয়া হয়েছে:

   public long ParseUserIdFromAccessToken(string accessToken)
   {
        Contract.Requires(!string.isNullOrEmpty(accessToken);

        /*
         * access_token:
         *   1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc
         *                                               |_______|
         *                                                   |
         *                                                user id
         */

        long userId = 0;

        var accessTokenParts = accessToken.Split('|');

        if (accessTokenParts.Length == 3)
        {
            var idPart = accessTokenParts[1];
            if (!string.IsNullOrEmpty(idPart))
            {
                var index = idPart.LastIndexOf('-');
                if (index >= 0)
                {
                    string id = idPart.Substring(index + 1);
                    if (!string.IsNullOrEmpty(id))
                    {
                        return id;
                    }
                }
            }
        }

        return null;
    }

সতর্কতা: অ্যাক্সেস টোকেনের কাঠামোটি অননুমোদিত এবং সর্বদা উপরের প্যাটার্নে ফিট নাও হতে পারে। নিজ ঝুঁকিতে এটি ব্যবহার করুন।

ফেসবুকের পরিবর্তনের কারণে আপডেট । এনক্রিপ্ট করা অ্যাক্সেস টোকেন থেকে ইউজারিড পাওয়ার জন্য পছন্দের পদ্ধতিটি নিম্নরূপ:

try
{
    var fb = new FacebookClient(accessToken);
    var result = (IDictionary<string, object>)fb.Get("/me?fields=id");
    return (string)result["id"];
}
catch (FacebookOAuthException)
{
    return null;
}

4
এটি পুরোপুরি ঠিক আগে কাজ করে তবে ফেসবুক OAuth2.0 এ আপডেট হওয়ার পরে। এই পদ্ধতিটি আর কাজ করতে পারে না।
লুসেমিয়া

12
আমি আশা করি আমি এই পদ্ধতির বিষয়ে সতর্কতা অবলম্বন করেছি। অ্যাক্সেস টোকেনগুলির ফর্ম্যাট বদলে গেছে বলেই আমরা আজ আমাদের প্যান্ট ধরে ফেললাম। আমি এই পদ্ধতির এড়ানো এবং স্বীকৃত উত্তরের সাথে যেতে অনুরোধ করছি।
টড মেনিয়ার

4
আমি দেখেছি সবচেয়ে মজার উত্তর thats: ডি
খুনশান

এছাড়াও নোট করুন যে এর মতো পদ্ধতিগুলি প্রদত্ত ব্যবহারকারীর আইডি যাচাই করে না - যে কোনও আইডি যে কেউ চায় সেগুলি বিভক্ত করতে পারে এবং এই কোডটি অন্ধভাবে এটি বিশ্বাস করবে।
ম্যাট লিয়নস

7

আপনি onSuccess এ কোড নীচে ব্যবহার করতে পারেন (লগইনআরসাল্ট লগইন ফলাফল

loginResult.getAccessToken ()। getUserId ();


6

আপনাকে কেবল আর একটি গ্রাফ এপিআই হিট করতে হবে:

https://graph.facebook.com/me?access_token={access-token}

এটি আপনার ই-মেইল আইডি এবং ব্যবহারকারী আইডিও দেবে (ফেসবুকের জন্য)।


আমি সেখান থেকে কেবল সরবরাহকারী_ইড এবং নাম পাচ্ছি, তবে আমি ফেসবুক থেকে ব্যবহারকারীর নাম পাচ্ছি না। লিঙ্কটির মতো , এটি ব্যবহারকারীর নাম যা ব্যবহারকারীদের প্রোফাইলটি সরাসরি খুলবে, সরবরাহকারী আইডির সাথে এটি কাজ করছে না।
সালমান রিয়াজ

3

নতুন এপিআই সহ, আমি এটির জন্য কোডটি ব্যবহার করেছি

/*params*/
NSDictionary *params = @{
                         @"access_token": [[FBSDKAccessToken currentAccessToken] tokenString],
                         @"fields": @"id"
                         };
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                              initWithGraphPath:@"me"
                              parameters:params
                              HTTPMethod:@"GET"];

[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    NSDictionary *res = result;
    //res is a dict that has the key
    NSLog([res objectForKey:@"id"]);

আমি ধারণা পেয়েছি, তবে এটি কেবলমাত্র টোকেনটি ইউজারআইডি প্রদান করে না।
জোনস

এই উত্তরটি 2 বছরের পুরানো মনে রাখবেন। তারা এসডিকে কিছু কিছু পরিবর্তন করেছে
অ্যান্ড্রুস্মিলি

2

FacebookSDK v2.1 এ (আমি পুরানো সংস্করণটি চেক করতে পারি না)। আমাদের আছে

NSString *currentUserFBID = [FBSession activeSession].accessTokenData.userID;

তবে ফেসবুক এসডিকে মন্তব্য অনুযায়ী

@ ডিসকাশন এটি আইওএস সিস্টেম অ্যাকাউন্টের মতো লগইন আচরণের জন্য জনপ্রিয় নাও হতে পারে।

তাই এটি আপনার পাওয়া উচিত কিনা তা যাচাই করা উচিত এবং তারপরে এটি ব্যবহার করুন কিনা, বা ব্যবহারকারী আইডি পাওয়ার জন্য অনুরোধটি কল করুন


0

এই উত্তরটি দেখুন , যা বর্ণনা করে যে কীভাবে আইডি প্রতিক্রিয়া পাবেন। প্রথমত, আপনাকে ডেটা পেতে পদ্ধতি তৈরি করতে হবে:

const https = require('https');
getFbData = (accessToken, apiPath, callback) => {
    const options = {
        host: 'graph.facebook.com',
        port: 443,
        path: `${apiPath}access_token=${accessToken}`, // apiPath example: '/me/friends'
        method: 'GET'
    };

    let buffer = ''; // this buffer will be populated with the chunks of the data received from facebook
    const request = https.get(options, (result) => {
        result.setEncoding('utf8');
        result.on('data', (chunk) => {
            buffer += chunk;
        });

        result.on('end', () => {
            callback(buffer);
        });
    });

    request.on('error', (e) => {
        console.log(`error from facebook.getFbData: ${e.message}`)
    });

    request.end();
}

তারপরে আপনি যখন চাইবেন কেবল তখনই নিজের পদ্ধতিটি ব্যবহার করুন:

getFbData(access_token, '/me?fields=id&', (result) => {
      console.log(result);
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.